This document discusses how to become an expert Android developer using Google technologies. It recommends using Android Studio as the integrated development environment due to its fast tools for building apps. It also recommends using the Android Jetpack architecture components like ViewModel, LiveData, and Room to accelerate development and build robust apps by eliminating boilerplate code. The document also covers other Jetpack components like Data Binding, Navigation, Lifecycles, and Testing to further improve the development process.
High Performance Cloud Native APIs Using Apache Geode VMware Tanzu
SpringOne Platform 2017
Anna Jung, HCSC; Paul Vermeulen, Pivotal
"Traditionally cloud native APIs contain the logic to convert data from repositories into information. As the dataset grows it is difficult to scale traditional databases to meet increasing transaction volume. Apache Geode provides high speed, zero downtime data access that allows you to build fast, highly available APIs.
In this session, Anna and Paul will cover how to seamlessly integrate Apache Geode's high performance functions with cloud native APIs. In addition, they will showcase how to test drive the development of Apache Geode backed solutions (Test Driven Development)."
This Presentation will give u information about Android :
1. Creating menus- Options Menu.
2. Context Menu Styles and themes Creating dialogs- Alert Dialog,
3. DatePicker Dialog,
4. TimePicker Dialog,
5. Progress Dialog
Dicoding Developer Coaching #26: Android | Menyimpan Database dengan Lebih Si...DicodingEvent
Dicoding Developer Coaching merupakan webinar, yang membahas tuntas kendala maupun pertanyaan yang sering ditanyakan di Academy Dicoding.
Tema kali ini adalah "Menyimpan Database dengan Lebih Simpel Menggunakan Room"
Di sini Anda akan belajar mengenai bagaimana cara menyimpan data ke database dengan menggunakan Room. Seperti yang Anda ketahui, Room adalah sebuah ORM library atau Object Relational Mapping library. Dengan kata lain, Room akan memetakan obyek database ke obyek Java. Room menyediakan lapisan abstraksi di atas SQLite untuk memungkinkan aplikasi mengakses database dengan lancar dan memanfaatkan kekuatan atau kemampuan dari SQLite.
Slides for our (John Rodriguez and myself) talk at Droidcon SF: http://sf.droidcon.com/schedule
For the past 3 years, Square Register Android has leveraged Dagger † to wire up Java objects. However, the app scope hierarchy and complexity increased and we started having bugs and crashes related to scoping errors. This talk will show how to structure an app around Dagger2 ‡ and present a strategy for incrementally migrating from Dagger1 to Dagger2.
Google App Engine (GAE) otherwise called APP Engine. It is a stage as an administration (PaaS) of distributed computing for web application facilitating and growing in information administration focal point of Google. These applications are run various servers and sandboxed.
In this presentation I will go through latest features being added in Spring 3.1/3.2 one more time and also will try to look behind the scene on what new features are comming in Spring 4 which should be released at the end of this year.
En los últimos años vimos grandes cambios en Android.
Empezando por Android Studio, dejando de lado Eclipse e incorporando Gradle. Luego el lanzamiento de Android 5 Lollipop, presentando el concepto de Material Design y por último, la incorporación de Android Wear, Auto y TV.
Son muchos cambios en poco tiempo, es por eso que necesitamos mejorar el proceso de desarrollo, incorporando las últimas tecnologías pero sin descuidar la calidad del producto.
En esta charla veremos algunas buenas prácticas para asegurar una aplicación de gran calidad.
High Performance Cloud Native APIs Using Apache Geode VMware Tanzu
SpringOne Platform 2017
Anna Jung, HCSC; Paul Vermeulen, Pivotal
"Traditionally cloud native APIs contain the logic to convert data from repositories into information. As the dataset grows it is difficult to scale traditional databases to meet increasing transaction volume. Apache Geode provides high speed, zero downtime data access that allows you to build fast, highly available APIs.
In this session, Anna and Paul will cover how to seamlessly integrate Apache Geode's high performance functions with cloud native APIs. In addition, they will showcase how to test drive the development of Apache Geode backed solutions (Test Driven Development)."
This Presentation will give u information about Android :
1. Creating menus- Options Menu.
2. Context Menu Styles and themes Creating dialogs- Alert Dialog,
3. DatePicker Dialog,
4. TimePicker Dialog,
5. Progress Dialog
Dicoding Developer Coaching #26: Android | Menyimpan Database dengan Lebih Si...DicodingEvent
Dicoding Developer Coaching merupakan webinar, yang membahas tuntas kendala maupun pertanyaan yang sering ditanyakan di Academy Dicoding.
Tema kali ini adalah "Menyimpan Database dengan Lebih Simpel Menggunakan Room"
Di sini Anda akan belajar mengenai bagaimana cara menyimpan data ke database dengan menggunakan Room. Seperti yang Anda ketahui, Room adalah sebuah ORM library atau Object Relational Mapping library. Dengan kata lain, Room akan memetakan obyek database ke obyek Java. Room menyediakan lapisan abstraksi di atas SQLite untuk memungkinkan aplikasi mengakses database dengan lancar dan memanfaatkan kekuatan atau kemampuan dari SQLite.
Slides for our (John Rodriguez and myself) talk at Droidcon SF: http://sf.droidcon.com/schedule
For the past 3 years, Square Register Android has leveraged Dagger † to wire up Java objects. However, the app scope hierarchy and complexity increased and we started having bugs and crashes related to scoping errors. This talk will show how to structure an app around Dagger2 ‡ and present a strategy for incrementally migrating from Dagger1 to Dagger2.
Google App Engine (GAE) otherwise called APP Engine. It is a stage as an administration (PaaS) of distributed computing for web application facilitating and growing in information administration focal point of Google. These applications are run various servers and sandboxed.
In this presentation I will go through latest features being added in Spring 3.1/3.2 one more time and also will try to look behind the scene on what new features are comming in Spring 4 which should be released at the end of this year.
En los últimos años vimos grandes cambios en Android.
Empezando por Android Studio, dejando de lado Eclipse e incorporando Gradle. Luego el lanzamiento de Android 5 Lollipop, presentando el concepto de Material Design y por último, la incorporación de Android Wear, Auto y TV.
Son muchos cambios en poco tiempo, es por eso que necesitamos mejorar el proceso de desarrollo, incorporando las últimas tecnologías pero sin descuidar la calidad del producto.
En esta charla veremos algunas buenas prácticas para asegurar una aplicación de gran calidad.
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Nicolas HAAN
À l'automne dernier, nous avons eu la chance de développer une nouvelle app pour un de nos clients en partant de zéro.
L'objectif ? Créer une application minimale à mettre entre les mains de dizaines de beta testeurs, en 8 semaines et avec 2 développeurs. Partant d'une feuille blanche, nous avons pu mettre en œuvre les dernières avancées de la stack Android sans être contraints par l'existant.
Développeurs débutants comme expérimentés, vous repartirez de ce talk avec nos apprentissages clés sur l'architecture ainsi que sur les bibliothèques et astuces pour faciliter la maintenance et la stabilité de l'application. En bonus, nous répondrons à la question : "Une app full-compose, est-ce que c'est cool ?"
Android Application Development (Android Studio, PHP, XML, MySQL)
Developed an Android Application which connects to a cloud database for Update, Retrieve, Edit and Delete queries for Quarter Allotment of Employees.
OBJECTIVES:
1) Design a cloud-based MySQL Database for storing and performing operations of all employee data.
2) Design a User Interface based on Android to enable user to interact with the Database.
3) Implement the above using JAVA, XML and PHP.
SCOPE:
1) Apply (Insert) of Application
2) Modification (Edit) of Application
3) Cancellation (Deletion) of Application
4) Status of Application
Cara Tepat Menjadi iOS Developer Expert - Gilang RamadhanDicodingEvent
Untuk memenangkan kompetisi pasar dan mengatasi mahalnya biaya akuisisi pengguna, diperlukan aplikasi iOS dengan performa tinggi yang siap saing dan pro pada retensi pengguna.
Seorang iOS Developer Expert adalah sosok yang mampu mewujudkan App paripurna tersebut. Minim bug, tinggi level keamanannya, dan kecilnya ukuran aplikasi adalah faktor yang harus ia pertimbangkan demi kenyamanan pengguna.
Sementara itu dari sisi kode, seorang iOS Developer Expert harus memastikan bahwa aplikasinya scalable alias tetap bekerja dengan baik saat produk berubah mengikuti kebutuhan bisnis. App tersebut juga harus robust alias dibangun dengan pondasi kode yang kuat.
Jika tidak, perusahaan akan terbebani biaya pengembangan yang tinggi karena sulitnya perbaikan akibat code smell, yakni kode yang berantakan atau berstruktur buruk.
Dalam IDCamp x Dicoding LIVE kali ini kita akan membahas hal-hal yang mesti seorang iOS Developer Expert pahami, yakni best-practice penerapan teknologi terbaru iOS Development yang industri perlukan, sesuai dengan kebutuhan bisnis.
Jika impianmu adalah menjadi iOS Developer Expert, kamu memerlukan insight ini agar kode menjadi lebih kokoh dan mudah untuk dikembangkan menyesuaikan dengan kebutuhan bisnis.
Poin-poin yang akan dibahas mencakup:
- Apa saja praktik terbaik dan keahlian yang wajib kamu miliki guna menjadi iOS Developer Expert? Kenapa penting?
- Bagaimana kelas Menjadi iOS Developer Expert di Dicoding dapat bantu kamu menjadi iOS Developer Expert?
IJRET : International Journal of Research in Engineering and Technology is an international peer reviewed, online journal published by eSAT Publishing House for the enhancement of research in various disciplines of Engineering and Technology. The aim and scope of the journal is to provide an academic medium and an important reference for the advancement and dissemination of research results that support high-level learning, teaching and research in the fields of Engineering and Technology. We bring together Scientists, Academician, Field Engineers, Scholars and Students of related fields of Engineering and Technology
Google Developer Group(GDG) DevFest Event 2012 Android talkImam Raza
This presentation is Imam Raza's tech talk on "Android" in Google Developer Group DevFest 2012 Event. In the event Mr. Imam Raza condemned recent blasphemy act of Google of not removing blasphemy video by saying "Shame on You". He also appreciated the efforts of minorities who stand with Muslim community on this issue.
He also read following Stanza from Allama Iqbal poem "Jawaab-e-Shikwa", in which Allah is answering to complains of Muslims to Him. In below stanza Allah is praising His prophet Mohammad (peace be upon him) and telling that this universe is made due His beloved prophet Mohammad (peace be upon him). In last part of stanza Allah tells Muslims that if they want to success in this world and there after then they have to make themselves loyal to Mohammad (peace be upon him).
ہو نہ یہ پھول تو بلبل کا ترنم بھی نہ ہو
چمن دہر میں کلیوں کا تبسم بھی نہ ہو
یہ نہ ساقی ہو تو پھر مے بھی نہ ہو،خم بھی نہ ہو
بزم توحید بھی دنیا میں نہ ہو، تم بھی نہ ہو
خیمہ افلاک کا استادة اسی نام سے ہے
نبض ہستی تپش امادة اسی نام سے ہے
دشت میں، دامن کہسارمیں،میدان میں ہے
بحر میں، موج کی ا غوش میں،طوفان میں ہے
چین کے شہر، مراقش کے بیابان میں ہے
اور پوشیدة مسلمان کے ایمان میں ہے
چشم اقوام یہ نظارة ابد تک دیکھے
رفعت شان رفعنالک ذکرک دیکھے
کی محمد سے وفا تو نے تو ہم تیرے ہیں
یہ جہاں چیز ہے کیا، لوح و قلم تیرے ہیں
Android app development SEO Expert Bangladesh LTD.pdfTasnim Jahan
Welcome to
What is website development?
Modern Android Development in 2023
Hello everyone, today I'm going to show you how to create Android apps using the newest trends for 2023.
Disclaimer
This essay is based on my professional experience and opinions. It also takes into account the diverse viewpoints held by the Android developer community and the ongoing revision of the Google for Android instructions.
I must be clear that while I might not have mentioned some extremely intriguing tools, patterns, or architectures, that does not indicate that there aren't any more intriguing options for creating Android applications.
What is android?
Google created the open-source Android operating system, which is based on the Linux kernel. It is utilized in a wide range of gadgets, such as smartwatches, tablets, TVs, and smartphones.
According to a statcounter research using data from a sample of the last 12 months, Android now has a market share of 71.96% for mobile operating systems.
After that, I'll include a number of resources that I believe are crucial for creating cutting-edge Android applications, including tools, libraries, architectures, manuals, and other utilities.
Kotlin
JetBrains created the programming language Kotlin. Google, who made the official announcement in May 2017 (see published here), has recommended it. It is a cutting-edge programming language that can operate on the JVM and is compatible with Java, which has sped up the adoption of Android application development.
Consider Kotlin as your first option Android app development whether you are new to Android or not; don't go against the flow. This strategy was disclosed by Google at Google I/O 2019. You may leverage all the new language features, such as the strength of Coroutines and the utilization of contemporary libraries created for the Android ecosystem, using Kotlin.
Jetpack Compose
The Kotlin programming language is used by Jetpack Compose, a component of the Android Jetpack library, to quickly generate a native user interface. Additionally, it connects with other libraries included with the Android Jetpack, such LiveData and ViewModel, to make it simpler to create responsive and enduring Android applications.
• Jetpack Compose's main features include the following:
• Declarative user interface.
• widgets that are adaptable.
• simple integration with current code.
• instant preview.
• enhanced capability.
• Resources:
• Authenticated records.
• Kotlin Compatibility Map Compose
• Roadmap - Jetpack Compose
• Course
Android Jetpack
In order to free up their time to work on the code they are passionate about, developers may focus on writing code that works reliably across Android versions and devices with the aid of the Jetpack library suite.
Its most typical tools include:
• ViewModel
• Room
• DataStore
• WorkManager
• Navigation
Material Design
The best practices of user interface design are supported by the flexible system of rules, elements, and tools known as Material
Android app development SEO Expert Bangladesh LTD.pdfTasnim Jahan
Welcome to
What is website development?
Modern Android Development in 2023
Hello everyone, today I'm going to show you how to create Android apps using the newest trends for 2023.
Disclaimer
This essay is based on my professional experience and opinions. It also takes into account the diverse viewpoints held by the Android developer community and the ongoing revision of the Google for Android instructions.
I must be clear that while I might not have mentioned some extremely intriguing tools, patterns, or architectures, that does not indicate that there aren't any more intriguing options for creating Android applications.
What is android?
Google created the open-source Android operating system, which is based on the Linux kernel. It is utilized in a wide range of gadgets, such as smartwatches, tablets, TVs, and smartphones.
According to a statcounter research using data from a sample of the last 12 months, Android now has a market share of 71.96% for mobile operating systems.
After that, I'll include a number of resources that I believe are crucial for creating cutting-edge Android applications, including tools, libraries, architectures, manuals, and other utilities.
Kotlin
JetBrains created the programming language Kotlin. Google, who made the official announcement in May 2017 (see published here), has recommended it. It is a cutting-edge programming language that can operate on the JVM and is compatible with Java, which has sped up the adoption of Android application development.
Consider Kotlin as your first option Android app development whether you are new to Android or not; don't go against the flow. This strategy was disclosed by Google at Google I/O 2019. You may leverage all the new language features, such as the strength of Coroutines and the utilization of contemporary libraries created for the Android ecosystem, using Kotlin.
Jetpack Compose
The Kotlin programming language is used by Jetpack Compose, a component of the Android Jetpack library, to quickly generate a native user interface. Additionally, it connects with other libraries included with the Android Jetpack, such LiveData and ViewModel, to make it simpler to create responsive and enduring Android applications.
• Jetpack Compose's main features include the following:
• Declarative user interface.
• widgets that are adaptable.
• simple integration with current code.
• instant preview.
• enhanced capability.
• Resources:
• Authenticated records.
• Kotlin Compatibility Map Compose
• Roadmap - Jetpack Compose
• Course
Android Jetpack
In order to free up their time to work on the code they are passionate about, developers may focus on writing code that works reliably across Android versions and devices with the aid of the Jetpack library suite.
Its most typical tools include:
• ViewModel
• Room
• DataStore
• WorkManager
• Navigation
Material Design
The best practices of user interface design are supported by the flexible system of rules, elements, and tools known as Material
Exploring Career Paths in Cybersecurity for Technical CommunicatorsBen Woelk, CISSP, CPTC
Brief overview of career options in cybersecurity for technical communicators. Includes discussion of my career path, certification options, NICE and NIST resources.
NIDM (National Institute Of Digital Marketing) Bangalore Is One Of The Leading & best Digital Marketing Institute In Bangalore, India And We Have Brand Value For The Quality Of Education Which We Provide.
www.nidmindia.com
This comprehensive program covers essential aspects of performance marketing, growth strategies, and tactics, such as search engine optimization (SEO), pay-per-click (PPC) advertising, content marketing, social media marketing, and more
New Explore Careers and College Majors 2024.pdfDr. Mary Askew
Explore Careers and College Majors is a new online, interactive, self-guided career, major and college planning system.
The career system works on all devices!
For more Information, go to https://bit.ly/3SW5w8W
The Impact of Artificial Intelligence on Modern Society.pdfssuser3e63fc
Just a game Assignment 3
1. What has made Louis Vuitton's business model successful in the Japanese luxury market?
2. What are the opportunities and challenges for Louis Vuitton in Japan?
3. What are the specifics of the Japanese fashion luxury market?
4. How did Louis Vuitton enter into the Japanese market originally? What were the other entry strategies it adopted later to strengthen its presence?
5. Will Louis Vuitton have any new challenges arise due to the global financial crisis? How does it overcome the new challenges?Assignment 3
1. What has made Louis Vuitton's business model successful in the Japanese luxury market?
2. What are the opportunities and challenges for Louis Vuitton in Japan?
3. What are the specifics of the Japanese fashion luxury market?
4. How did Louis Vuitton enter into the Japanese market originally? What were the other entry strategies it adopted later to strengthen its presence?
5. Will Louis Vuitton have any new challenges arise due to the global financial crisis? How does it overcome the new challenges?Assignment 3
1. What has made Louis Vuitton's business model successful in the Japanese luxury market?
2. What are the opportunities and challenges for Louis Vuitton in Japan?
3. What are the specifics of the Japanese fashion luxury market?
4. How did Louis Vuitton enter into the Japanese market originally? What were the other entry strategies it adopted later to strengthen its presence?
5. Will Louis Vuitton have any new challenges arise due to the global financial crisis? How does it overcome the new challenges?
Want to move your career forward? Looking to build your leadership skills while helping others learn, grow, and improve their skills? Seeking someone who can guide you in achieving these goals?
You can accomplish this through a mentoring partnership. Learn more about the PMISSC Mentoring Program, where you’ll discover the incredible benefits of becoming a mentor or mentee. This program is designed to foster professional growth, enhance skills, and build a strong network within the project management community. Whether you're looking to share your expertise or seeking guidance to advance your career, the PMI Mentoring Program offers valuable opportunities for personal and professional development.
Watch this to learn:
* Overview of the PMISSC Mentoring Program: Mission, vision, and objectives.
* Benefits for Volunteer Mentors: Professional development, networking, personal satisfaction, and recognition.
* Advantages for Mentees: Career advancement, skill development, networking, and confidence building.
* Program Structure and Expectations: Mentor-mentee matching process, program phases, and time commitment.
* Success Stories and Testimonials: Inspiring examples from past participants.
* How to Get Involved: Steps to participate and resources available for support throughout the program.
Learn how you can make a difference in the project management community and take the next step in your professional journey.
About Hector Del Castillo
Hector is VP of Professional Development at the PMI Silver Spring Chapter, and CEO of Bold PM. He's a mid-market growth product executive and changemaker. He works with mid-market product-driven software executives to solve their biggest growth problems. He scales product growth, optimizes ops and builds loyal customers. He has reduced customer churn 33%, and boosted sales 47% for clients. He makes a significant impact by building and launching world-changing AI-powered products. If you're looking for an engaging and inspiring speaker to spark creativity and innovation within your organization, set up an appointment to discuss your specific needs and identify a suitable topic to inspire your audience at your next corporate conference, symposium, executive summit, or planning retreat.
About PMI Silver Spring Chapter
We are a branch of the Project Management Institute. We offer a platform for project management professionals in Silver Spring, MD, and the DC/Baltimore metro area. Monthly meetings facilitate networking, knowledge sharing, and professional development. For event details, visit pmissc.org.
7. Kenapa Developer Memilih Android?
Android memanjakan penggunanya dengan fitur
yang sangat canggih dan tampilan yang indah.
Sistem Android dapat digunakan sebagai alat
multimedia seperti pemutar musik dan video. Ia juga
memiliki perangkat keras seperti accelerometer,
gyroscope dan sensor lainnya.
10. Pada tahun 2013, Android menjadi operation system (OS) terlaris pada tablet dan
smartphone. Dan tercatat pada bulan Maret 2019 store Android memiliki lebih dari 2.6
juta aplikasi.
(https://www.statista.com/statistics/266210/number-of-available-applications-in-the-google-play-store/)
16. https://teknojurnal.com/pilih-membuat-aplikasi-mobile-native-atau-hybrid/
Native Hybrid
Development Language Native Only Native and Web / Web Only
Device Access Complete Complete
Device Specific Features High Moderate
Speed Very Fast Medium
App Store Available Available
Approval Process Mandatory Low Overhead
Code Portability None High
Advanced Graphics High Moderate
UI / UX High Moderate
Access to Native APIs High Moderate
Development Cost Expensive Reasonable
Native vs Hybrid
26. Foundation - AppCompat
Before After
com.android.support:cardview-v7 androidx.cardview:cardview:1.0.0
com.android.support:appcompat-v7 androidx.appcompat:appcompat:1.0.0
com.android.support:recyclerview-v7 androidx.recyclerview:recyclerview:1.0.0
android.arch.persistence.room:common androidx.room:room-common:2.0.0-rc01
android.arch.core:common androidx.arch.core:core-common:2.0.0-rc01
android.arch.core:core androidx.arch.core:core:2.0.0-rc01
android.arch.paging:common androidx.paging:paging-common:2.0.0-rc01
.... ....
Degrade gracefully on older versions of Android
27. Foundation - Android KTX
Getting Started
dependencies {
implementation 'androidx.core:core-ktx:1.0.0'
}
Before
sharedPreferences.edit()
.putBoolean("key", value)
.apply()
After
sharedPreferences.edit {
putBoolean("key", value)
}
Write more concise, idiomatic Kotlin code
28. Kotlin
Concise
Drastically reduce the
amount of boilerplate code.
Safe
Avoid entire classes of errors
such as null pointer
exceptions.
Tool-friendly
Choose any Java IDE or
build from the command
line.
Interoperable
Leverage existing libraries
for the JVM, Android, and
the browser.
Kotlin/Native
reached beta
Coroutines
are now stable
Learning Kits
start easily
Multiplatform
code reuse
Kotlin 1.3 Released
29. Parts of
Anko Layouts: a fast and type-safe way to write dynamic Android
layouts.
Anko Commons: a lightweight library full of helpers for intents,
dialogs, logging and so on.
Anko SQLite: a query DSL and parser collection for Android SQLite.
Anko Coroutines: utilities based on the kotlinx.coroutines library.
31. Foundation - Benchmark
Quickly benchmark your Kotlin-based or Java-based code from within Android Studio
Add the library to your module’s build.gradle file:
project_root/module_dir/build.gradle
To disable debugging in the test manifest, update your <application> element to force-disable debugging
temporarily as follows:
project_root/module_dir/src/androidTest/AndroidManifest.xml
32. Foundation - Benchmark
Quickly benchmark your Kotlin-based or Java-based code from within Android Studio
To add your benchmark, add an instance of BenchmarkRule in a test file in the androidTest directory. For more
information on writing benchmarks, see Write a benchmark.
The following code snippet shows how to add a benchmark to a JUnit test:
33. Foundation - Multidex
Multidex Support prior to Android 5.0 (Api 21)
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 28
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.3'
}
Provide support for apps with multiple DEX files
Enable multidex for apps
with over 64K methods
34. Foundation - Security
Read and write encrypted files and shared preferences by following security best practices.
● Strong security that balances great encryption and good performance.
● Maximum security.
The Security library uses a 2-part system for key management:
● A keyset that contains one or more keys to encrypt a file or shared preferences data. The keyset itself is
stored inSharedPreferences.
● A master key that encrypts all keysets. This key is stored using the Android keystore system.
35. New Feature New Bugs . . .
https://gph.is/2jt9RvW
Foundation - Test
An Android testing framework for unit and runtime UI tests
47. Architecture - LiveData
Ensures your UI matches your data state
No memory leaks
No crashes due to stopped activities
No more manual lifecycle handling
Always up to date data
Proper configuration changes
Sharing resources
Notify views when underlying database changes
48. Architecture - LiveData
public class NameViewModel extends ViewModel {
// Create a LiveData with a String
private MutableLiveData<String> currentName;
public MutableLiveData<String> getCurrentName() {
if (currentName == null) {
currentName = new MutableLiveData<String>();
}
return currentName;
}
// Rest of the ViewModel...
}
Notify views when underlying database changes
49. public class NameActivity extends AppCompatActivity {
private NameViewModel model;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Other code to setup the activity...
// Get the ViewModel.
model = ViewModelProviders.of(this).get(NameViewModel.class);
// Create the observer which updates the UI.
final Observer<String> nameObserver = new Observer<String>() {
@Override
public void onChanged(@Nullable final String newName) {
// Update the UI, in this case, a TextView.
nameTextView.setText(newName);
}
};
// Observe the LiveData, passing in this activity as the LifecycleOwner and the observer.
model.getCurrentName().observe(this, nameObserver);
}
}
50. Architecture - Data Binding
Getting Started
android {
....
dataBinding {
enabled = true
}
}
Declaratively bind observable data to UI elements
Activity
TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());
Layout
<TextView
android:text="@{viewmodel.userName}" />
51. Architecture - Lifecycles
class MyLocationListener {
public MyLocationListener(Context context, Callback callback) {
// ...
}
void start() {
// connect to system location service
}
void stop() {
// disconnect from system location service
}
}
Manage your activity and fragment lifecycles
52. class MyActivity extends AppCompatActivity {
private MyLocationListener myLocationListener;
@Override
public void onCreate(...) {
myLocationListener = new MyLocationListener(this, (location) -> {
// update UI
});
}
@Override
public void onStart() {
super.onStart();
myLocationListener.start();
// manage other components that need to respond to the activity lifecycle
}
@Override
public void onStop() {
super.onStop();
myLocationListener.stop();
// manage other components that need to respond to the activity lifecycle
}
}
53. class MyActivity extends AppCompatActivity {
...
@Override
public void onStart() {
super.onStart();
Util.checkUserStatus(result -> {
// what if this callback is invoked AFTER activity is stopped?
if (result) {
myLocationListener.start();
}
});
}
...
}
55. Architecture - Lifecycles
public class MyObserver implements LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void connectListener() {
...
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void disconnectListener() {
...
}
}
myLifecycleOwner.getLifecycle().addObserver(new MyObserver());
Manage your activity and fragment lifecycles
57. Architecture - Room
Entity
@Entity
public class User {
@PrimaryKey
public int uid;
@ColumnInfo(name = "first_name")
public String firstName;
@ColumnInfo(name = "last_name")
public String lastName;
}
58. Architecture - Room
Dao
@Dao
public interface UserDao {
@Query("SELECT * FROM user")
List<User> getAll();
@Query("SELECT * FROM user WHERE uid IN (:userIds)")
List<User> loadAllByIds(int[] userIds);
@Query("SELECT * FROM user WHERE first_name LIKE :first AND " + "last_name LIKE :last LIMIT 1")
User findByName(String first, String last);
@Insert
void insertAll(User... users);
@Delete
void delete(User user);
}
59. Architecture - Room
Database
@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
Create Database
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").build();
61. Architecture - Paging
Gradually load information on demand from your data source
PagedList
public class ConcertViewModel extends ViewModel {
private ConcertDao concertDao;
public final LiveData<PagedList<Concert>> concertList;
// Creates a PagedList object with 50 items per page.
public ConcertViewModel(ConcertDao concertDao) {
this.concertDao = concertDao;
concertList = new LivePagedListBuilder<>(
concertDao.concertsByDate(), 50).build();
}
}
62. Architecture - Paging
Gradually load information on demand from your data source
Data
@Dao
public interface ConcertDao {
// The Integer type parameter tells Room to use a
// PositionalDataSource object.
@Query("SELECT * FROM concerts ORDER BY date DESC")
DataSource.Factory<Integer, Concert> concertsByDate();
}
63. Architecture - Paging
Gradually load information on demand from your data source
UI
public class BookmarkPagedAdapter extends PagedListAdapter<DataModel, ViewHolder> {
...
}
64. Architecture - Navigation
● Handling Fragment transactions
● Handling Up and Back actions correctly by default
● Providing standardized resources for animations and transitions
● Treating deep linking as a first-class operation
● Including Navigation UI patterns, such as navigation drawers and bottom navigation, with minimal
additional work
● Providing type safety when passing information while navigating
● Visualizing and editing navigation graphs with Android Studio's Navigation Editor
Handle everything needed for in-app navigation
If you want to use the Navigation Architecture Component with Android Studio, you must use Android Studio 3.2 Canary 14 or higher.
66. Architecture - WorkManager
Key features:
● Backwards compatible up to API 14
○ Uses JobScheduler on devices with API 23+
○ Uses a combination of BroadcastReceiver + AlarmManager on devices with API 14-22
● Add work constraints like network availability or charging status
● Schedule asynchronous one-off or periodic tasks
● Monitor and manage scheduled tasks
● Chain tasks together
● Guarantees task execution, even if the app or device restarts
Manage your Android background jobs
67. Architecture - WorkManager
public class UploadWorker extends Worker {
public UploadWorker(@NonNull Context context, @NonNull WorkerParameters params) {
super(context, params);
}
@Override
public Result doWork() {
// Do the work here--in this case, upload the images.
uploadImages()
// Indicate whether the task finished successfully with the Result
return Result.success()
}
}
Manage your Android background jobs
68. Architecture - WorkManager
OneTimeWorkRequest
OneTimeWorkRequest uploadWorkRequest = new OneTimeWorkRequest.Builder(UploadWorker.class).build()
PeriodicWorkRequest
Constraints constraints = new Constraints.Builder().setRequiresCharging(true).build();
PeriodicWorkRequest saveRequest = new PeriodicWorkRequest.Builder(SaveImageFileWorker.class, 1,
TimeUnit.HOURS).setConstraints(constraints).build();
WorkManager.getInstance().enqueue(saveRequest);
Manage your Android background jobs
71. Behavior - CameraX
Easily add camera capabilities to your apps
● Ease of use
○ Preview: get an image on the display
○ Image analysis: access a buffer seamlessly for use in your algorithms, such as to pass into MLKit
○ Image capture: save high-quality images
● Consistency across devices
● New camera experiences
72. Behavior - Download Manager
Schedule and manage large downloads
class DownloadManager.Query
This class may be used to filter download manager queries.
class DownloadManager.Request
This class contains all the information necessary to request a new download.
73. Behavior - Media & Playback
Backwards compatible APIs for media playback and routing (including Google Cast)
A multimedia application that plays audio or video usually has two parts:
● A player that takes digital media in and renders it as video and/or audio.
● A UI with transport controls to run the player and optionally display the player's state.
74. Behavior - Media & Playback
Backwards compatible APIs for media playback and routing (including Google Cast)
76. Behavior - Notifications
Provides a backwards-compatible notification API with support for Wear and Auto
Status bar and notification drawer Heads-up notification
77. Behavior - Notifications
Provides a backwards-compatible notification API with support for Wear and Auto
Lock screen App icon badge Wear OS devices
78. Behavior - Notifications
Provides a backwards-compatible notification API with support for Wear and Auto
1. Small icon: This is required and set with setSmallIcon().
2. App name: This is provided by the system.
3. Time stamp: This is provided by the system but you can override with setWhen() or hide it with
setShowWhen(false).
4. Large icon: This is optional (usually used only for contact photos; do not use it for your app icon) and set
withsetLargeIcon().
5. Title: This is optional and set with setContentTitle().
6. Text: This is optional and set with setContentText().
87. Behavior - Slices
Example Use Case
adb install -r -t slice-viewer.apk
Enter slice-<your slice URI> in the URL field
Example: slice-content://com.example.your.sliceuri
94. UI - Layout
Lay out widgets using different algorithms
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
107. Future of Firebase
Make smart,
data-driver decisions
Free to start. scale
with ease
Forget abaout
infrastructure
Get free support
Work across platform
126. Google releases source code for Google I/O 2019 for Android
https://android-developers.googleblog.com/2019/08/google-releases-source-code-for-google.html
127. Android Q out of the box
Gesture navigation
Gesture navigation navigating back
and to the home screen
128. Android Q out of the box
Dark Theme
Schedule UI in dark theme
142. Sertifikat / Sertifikasi
Kebutuhan
Industri IT
Talenta
Digital
Lulusan universitas
Lulusan SMK
Otodidak
Kursus
Profesional
dll (re-skilling)
Training /
Matrikulasi
Sertifikasi