Share
Embed
Persiapan Sebelum Ujian Sertifikasi Associate Android Developer - BDD 2021
Tak hanya prestisius & diimpikan banyak orang, sertifikasi Google AAD ini adalah bukti otentik seorang developer memiliki skill Android Developer kelas dunia. Lalu bagaimana caranya supaya kita bisa menjadi Associate Android Developer? Yuk kita bahas di sini!
https://youtu.be/VXFvAthCSqQ?t=6282
Ahmad Arif Faizin
April 03, 2021
Transcript
27 slides
-
Persiapan Sebelum Ujian Sertifikasi Associate Android Developer (AAD) Ahmad Arif
Faizin (Curriculum Developer-Dicoding Indonesia) -
Apa itu AAD? • Sertifikasi resmi langsung dari Google Developers
Certification. • Menguji skill yang harus dimiliki untuk memulai karir sebagai Android Developer dengan standar global. • Bisa menjadi bukti otentik bahwa kamu ahli dan berkompeten. -
Keuntungan Sertifikasi • Kamu bisa cantumkan badge AAD di LinkedIn,
medsos, email, dsb. • Lebih cepat dilirik perusahaan. • Kemudahan dalam mengambil project nasional. • Berkesempatan ke Google I/O*. • Masuk ke daftar Google Developers Certification Directory. -
Proses Ujian AAD • Daftar Google Developer Certification di TrueAbility.
• Bisa pilih Kotlin/Java. • Verifikasi identitas (Passport/SIM). • Cost $149 USD. • Proses ujian. • Tunggu pengumuman maksimal 45 hari . -
Ketentuan Ujian • Menggunakan plugin Google Developer Certification di Android
Studio • Disediakan starter project. • Lengkapi 8 task yang diberikan. • Waktu pengerjaan 8 jam. • Boleh buka browser & StackOverflow :) -
Materi Ujian • Android core functionality • User interface •
Data management • Debugging • Testing Sumber : https://developers.google.com/certification/associate-android-developer#exam-content -
Ketentuan Exit Interview • Bisa pilih waktu sendiri 7 hari
setelah ujian coding. • Bukan interview langsung, namun hanya merekam jawaban. • 5 soal terkait project. • Waktu menjawab per soal maksimal 2 menit (total 10 menit). • Harus menggunakan bahasa Inggris. -
Materi Interview • Project apa yang dibuat? • Bagian mana
yang paling susah? • Teori seputar Android. • Bagaimana suatu fitur bekerja? • Bagaimana cara menyelesaikan suatu masalah? -
Bagaimana Jika Gagal? • Jika gagal sekali, maka harus menunggu
14 hari . • Jika gagal lagi, maka harus menunggu 2 bulan. • Jika gagal lagi, maka harus menunggu 1 tahun. Note: Harus daftar dan bayar lagi :( -
Study Guide Android Core Toast, Snackbar, JobScheduler, WorkManager, Notification +
Pending Intent. User interface ConstraintLayout, RecyclerView, Paging, ViewPager2, CustomView, Style and Theme (Dark Mode), Menu & Pickers. Data management LiveData & Single Event, ViewModel & ViewModelFactory, Room & RawQuery, SharedPreference & Setting. Testing UI Testing dengan Espresso. -
Sample Case #1 : Complete Database Table @Entity(tableName = "tasks")
data class Task( @PrimaryKey(autoGenerate = true) @NonNull @ColumnInfo(name = "id") val id: Int = 0, @NonNull @ColumnInfo(name = "title") val title: String, @NonNull @ColumnInfo(name = "dueDate") val dueDateMillis: Long, @NonNull @ColumnInfo(name = "completed") val isCompleted: Boolean = false ) data class Task( val id: Int = 0, val title: String, val dueDateMillis: Long, val isCompleted: Boolean = false ) { "fieldPath": "title", "columnName": "title", "affinity": "TEXT", "notNull": true } • Schema in JSON • Starter Code -
Sample Case #2 : Define DAO @Dao interface TaskDao {
@RawQuery(observedEntities = [Task::class]) fun getTasks(query: SupportSQLiteQuery): DataSource.Factory<Int, Task> @Query("SELECT * FROM tasks WHERE completed = 0 ORDER BY dueDate ASC LIMIT 1") fun getNearestActiveTask(): Task @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertAll(vararg tasks: Task) @Delete suspend fun deleteTask(task: Task) } interface TaskDao { fun getTasks(query: SupportSQLiteQuery): DataSource.Factory<Int, Task> fun getNearestActiveTask(): Task fun insertAll(vararg tasks: Task) suspend fun deleteTask(task: Task) } • Starter Code -
Sample Case #3 : Pre-populate Database fun getInstance(context: Context): TaskDatabase
{ return INSTANCE ?: synchronized(this) { val instance = Room.databaseBuilder(context.applicationContext, TaskDatabase::class.java, "task.db) .addCallback(object : Callback() { override fun onCreate(db: SupportSQLiteDatabase) { super.onCreate(db) INSTANCE?.let { database -> Executors.newSingleThreadScheduledExecutor().execute { fillWithStartingData(context.applicationContext, database.taskDao()) } } } }) .build() INSTANCE = instance instance } } -
Sample Case #4 : Paging companion object { const val
PAGE_SIZE = 30 const val PLACEHOLDERS = true } fun getTasks(filter: TasksFilterType): LiveData<PagedList<Task>> { val query = "SELECT * FROM tasks WHERE completed = 1" val tasks = tasksDao.getTasks(query) val config= PagedList.Config.Builder() .setEnablePlaceholders(PLACEHOLDERS) .setInitialLoadSizeHint(PAGE_SIZE) .setPageSize(PAGE_SIZE) .build() return LivePagedListBuilder(tasks, config).build() } -
Sample Case #5 : Implement Setting class SettingsFragment : PreferenceFragmentCompat()
{ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.root_preferences, rootKey) val prefListThemes = findPreference<ListPreference>(getString(R.string.pref_key_dark)) prefListThemes?.setOnPreferenceChangeListener { _, newValue -> when (newValue) { getString(R.string.pref_dark_on) -> updateTheme(AppCompatDelegate.MODE_NIGHT_YES) getString(R.string.pref_dark_off) -> updateTheme(AppCompatDelegate.MODE_NIGHT_NO) else -> updateTheme(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) } } } private fun updateTheme(mode: Int): Boolean { AppCompatDelegate.setDefaultNightMode(mode) requireActivity().recreate() return true } } -
Other Sample Case • Lengkapi kode di ViewModel & Repository.
• Lengkapi kode di RecyclerView Adapter. • Buat layout sesuai mockup. • Tampilkan notifikasi setiap jam 6 pagi dan ketika diklik bisa masuk ke aplikasi. • Gunakan Custom View yang disediakan. • Benerin bug dari QA berikut ... • Buat UI testing ketika ... -
Tips & Trik • Mulai pagi hari, pilih hari yang
longgar. Atur waktu istirahat (untuk ibadah). • Pilih hari yang berbeda dengan hari pendaftaran, bisa jadi ada problem saat mendaftar. • Jangan panik, lihat seluruh kode dan pahami alur aplikasi & instruksinya. • Lihat contoh kode di class lain, beberapa kode yang menjadi task ada di class lain. • Fokus untuk menampilkan data dulu, setelah itu kerjakan dari yang paling mudah. • Manfaatkan shortcut dan plugin. • Jangan menambahkan kode yang tidak diperintahkan. • Double check / triple check setelah selesai. -
Contact: Ahmad Arif Faizin [email protected] medium.com/@arifaizin Replace Me! (Bisa ditambahkan
dengan image yang relevan)