Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Persiapan Sebelum Ujian Sertifikasi Associate Android Developer - BDD 2021

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

1fe3e1b3343b555b0a195180607fbd6a?s=128

Ahmad Arif Faizin

April 03, 2021
Tweet

Transcript

  1. Persiapan Sebelum Ujian Sertifikasi Associate Android Developer (AAD) Ahmad Arif

    Faizin (Curriculum Developer-Dicoding Indonesia)
  2. 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.
  3. 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.
  4. None
  5. 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 .
  6. Jenis Ujian AAD • Coding • Exit Interview

  7. 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 :)
  8. Materi Ujian • Android core functionality • User interface •

    Data management • Debugging • Testing Sumber : https://developers.google.com/certification/associate-android-developer#exam-content
  9. 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.
  10. Materi Interview • Project apa yang dibuat? • Bagian mana

    yang paling susah? • Teori seputar Android. • Bagaimana suatu fitur bekerja? • Bagaimana cara menyelesaikan suatu masalah?
  11. 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 :(
  12. Let’s Prepare!

  13. 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.
  14. Android Architecture Component • Activity/Fragment • ViewModel • LiveData •

    Repository • Room
  15. 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
  16. 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
  17. 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 } }
  18. 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() }
  19. 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 } }
  20. 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 ...
  21. None
  22. None
  23. 3 Simulation Project

  24. TO DO yang Jelas

  25. Review yang Membangun

  26. 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.
  27. Contact: Ahmad Arif Faizin arif@dicoding.com medium.com/@arifaizin Replace Me! (Bisa ditambahkan

    dengan image yang relevan)