Background Process & Threading


1. πŸ“– Pengertian Background Process & Threading

https://images.openai.com/static-rsc-4/kQc55gyIpVAIqgg5z9afQyGkykwicH8AZWsy90AkI_zqenD6XgIiAPOPM48J4lZcODZFUOVBRE4hq7yL6sP_cEaaNJkowhtYKTFg35baHUeNXRyuXzdnbxYRlL_KF24XaC_WSPRYkOp2icel85flDAwn3qW80cE4r1HpLjMqZzLZVY1dKEjGRPbiiPaFkE6i?purpose=fullsize
https://images.openai.com/static-rsc-4/T6FAkFChmNzLuIx_22GrYk-rHaQjRZKCtT__RNB6BDKwjeVjeqD0E4hOikmSkDoBj2LLatnxBC2G-UarhCnLCeXtAjc9bG9raDS4sjIEoeh_pR31PEdhs1bZaXogCBHuEH-RA-H-L3Gic7NJQaf_EohCUK5_zmtRc3WhsNw3Gp2oAbP6QCRKRW1gBV1LN28Z?purpose=fullsize
https://images.openai.com/static-rsc-4/TkIG88ZRiyL3g_AcsJY6Q3aUOgf5COhtKI-iMlqL--efGnz3GAwuWQyIjI0x-ylaMhsm_-7_yo95ss4ISAia9vENy1xXCflHgvshrTlRyrl7K-03QXky-8irNbTs2yh4u7f3xjuGXH4tDqfznrTyyGPQF-AYMhYpFcltRkTR_ucwiHxqSV-xCwHqjMuOINxR?purpose=fullsize

7

πŸ” Penjelasan

  • Background Process adalah proses yang berjalan di belakang layar tanpa interaksi langsung dengan pengguna.
  • Threading adalah teknik menjalankan beberapa proses secara bersamaan dalam satu aplikasi.

🧠 Narasi

Dalam aplikasi mobile, tidak semua proses dapat dijalankan di layar utama. Misalnya, saat aplikasi mengambil data dari internet, proses tersebut harus berjalan di background agar UI tetap responsif.


2. 🧠 Konsep Thread

https://images.openai.com/static-rsc-4/y3MxR-NCuIK1E05QoMjFfFsgwC6s5gytBDIy90272Rrq6oRHP43qgvB78nWL0wLqnXgVjEZnB9O_-cjbrxNjnuY1J5TXt7lkBjhQYxcAfYcnk_og1piaa3O9O-YkOigbuPQlBGLm9PEESUfVHaAKmtM5IxYNSAgAzQEdEqu24_y6cJ_YtZVv_JDhhmkjjBhM?purpose=fullsize
https://images.openai.com/static-rsc-4/Bwwn-I19YyAGUjfOvnaNrSd1JjsJKuVgebIfGoUjoDN-J5s2n0moEdiHcnMLwLguBxTk7APgEGFjaFJblkD_VN2Fgf4Ene1-p3jZ67TpcncuesbzAz0E_nss0ri8ozpicxm60Qn8djbEoAoanNdaXkrDZniRw_xKNIH_ZABGbA0vIRWzAO7NyE9csDCfFVBN?purpose=fullsize
https://images.openai.com/static-rsc-4/AfPWlO0iOr3BAFPpHBn37B8M3blal1OgZleymyTMMpA3VXPp0vPXaK46DJpLxV9V3tq5pItZ8M2909lkZ1IuYkkcQMTOHX-2fgc8Q_xAFT5i79NhYT-5NDHKrIPutaH9SvDiPva405SvxKnPSvJZ69IL4nnCiag26DZ9eeyWJlatAxYZIGm4sj57jD4WdJhz?purpose=fullsize

7

πŸ” Jenis Thread

  • Main Thread (UI Thread) β†’ menangani UI
  • Worker Thread β†’ menangani proses berat

🧠 Narasi

Main thread harus tetap ringan karena bertanggung jawab terhadap tampilan UI. Jika terlalu berat, aplikasi akan mengalami lag atau ANR (Application Not Responding).


3. ⚠️ Masalah pada Main Thread

https://images.openai.com/static-rsc-4/A1I5UVOfCIma8WNREVRNWE1utgFY0BUrEMAGnOzQ-hgmgMoBOttwKSlJdFw35etiEf5HLPv1uRYJ8awadyy--CylwsAzKYMWxSdny0kkzW84EIekVCj-t3Na9nv6EQ-ZtC7e2iihRUwUulY1J8YRK6sgliWxBpMWdY-jKoN0kzcBHuT0z1pnUP0wNiRCP7Rr?purpose=fullsize
https://images.openai.com/static-rsc-4/adbd_36FEBCuax0oBwXdRLQcyYAN6MEdxJVRWNUdo41daZ2Yp07E3lVJOZoHDZ6b0SsiawW9HWNDh1_s_u03jVCmyUsvpBGHAtcxLsH_VE7TY8zY4Mi1Xs1JmbS3XSGgrKCcDdhc3GE2_emC4dr1LzQqjR2-eJLRCjfyyLIq-RL2Q-8mxQaC4x3ETHi8rPa-?purpose=fullsize
https://images.openai.com/static-rsc-4/5KsOcSaInzUsKq_daN19x14EoP2whQFFuK3x-S0oi7vW2KWEJ2WAksutBS60qVkAsujuK37uTUaFwJbI3PnxKPp5T5Z4Okfo6sGP_Xi3d6LJlR9D94oTJhIgsMavRecNUTA6HEblHudnBEwJrlEGlq-zkb1cBCpLqPpqzD_7FZFpG4TMEk1bHMNyjRAvBtlv?purpose=fullsize

6

πŸ” Penyebab

  • Proses berat di main thread
  • Networking langsung di UI thread
  • Loop yang berlebihan

🧠 Narasi

Kesalahan ini sering terjadi pada pemula. Oleh karena itu, penting memahami konsep threading sejak awal.


4. πŸ”„ Konsep Asynchronous Programming

https://images.openai.com/static-rsc-4/LIXp8bTcA4xi0-c3R-EwZZNski9Nr2WMFO-Yy1sz0eWah-erRyzW2QPDTeFuVqpDw9t11Rnb8wsJX43_OdlFgVjhrso_kEPAS9y6qSlHD0sAQMAA88X-papDeGfo-5tmee3rejEDiw0THPwBp1K_W839mxsnoKXpaOnaTox3wJVA4yYYLJCyTQ2WlSS4uxsM?purpose=fullsize
https://images.openai.com/static-rsc-4/abWlwqSpOf3oMqwXIm7oQCZTnqpoELuVAhVMK4yXxW1W9_l1NA4MkfQf5Vj8o63df9ayUWqy--dlbJuMG1kqIU2_Ld0G_NJ5zn9FT01VqMFuZ6W34xZNnen5xYXtIUUROyyMnU5v1taMNBEVEJSxFiGWEkf_UNof2jbl2DNyXZ7Oc82MAYBGClfQ0U8ogHZW?purpose=fullsize
https://images.openai.com/static-rsc-4/kY6itrEpVnPhfI_XUpxAc3OpFkR6Nqz_F4WwUg5IEm8NrtQFQfQgnmSGRnRcsiWyYdH3UGG4whmofD0HoDtrYF35N7jJvEFmKDUE_RJlw0VJ8KxdPaJhNG-kU5HMr7-3F_OaYkt7ilrrZDdX-HvC0wN1BZTSxCFTJ6TYhzx1MlFvCu2LFub2LAmHiI5H3jsv?purpose=fullsize

8

πŸ” Penjelasan

Asynchronous memungkinkan proses berjalan tanpa mengganggu proses lain.

🧠 Narasi

Dengan async programming, aplikasi tetap responsif meskipun sedang memproses data di background.


5. 🧡 Implementasi Thread di Android

https://images.openai.com/static-rsc-4/7nXSFIM2q99FAcZdIo9bFkCqgy5ZpE9A6JlIOyE8AaKm5-g1wiCa-FEugiuQcuGtDoc3qsneNnnjvz_0noG0MdSc_YH5dbgKl0PxGJeldfApBRNHj5BXZ3cl65xBtKIqqC5URh-0L0uLlxjfTqzVIWYDJP6py3JfCONXsUi0WmI9twxX4vYRb6G81zZ2jWoE?purpose=fullsize
https://images.openai.com/static-rsc-4/aTmqhbKOuH7S-tXqvdgpDSpyN5_tmdyvwNaI-HsdK8LLpW8JX5iC2Xu52nMAmVew1IxAirAwPeTgESI5HpdTjHZsDKE81crLHFu42vksU7y-DO15wFBHhYskNMtbNn4xyoPQ6NbcRd4uv3x8dInjYRU0eOsxQskc2reCnWItpkXCytW8MNet-qcVwPGkLL3H?purpose=fullsize
https://images.openai.com/static-rsc-4/kdsICdOhtoBNYfJDrccDkIZWcuqvR8FxEfUWCOEnwim6jJnD4N2xbRLxdO-P60uK8NS6XQjeIxvnDhG3poN3UO1NsVUn1_5Eb0eYjb2H_-_r6uINZudwnpbS_-9ypgnbEkqH7Vv37lZAZ_X_LtPcW1XpxZ5iQkFaJXDOg5-By-LwDRht0-8lvzyIhxAgQ5vg?purpose=fullsize

7

πŸ” Contoh Thread

Thread {
println("Proses di background")
}.start()

🧠 Narasi

Thread manual dapat digunakan, namun memiliki keterbatasan dan cukup kompleks untuk dikelola.


6. βš™οΈ Handler dan Looper

https://images.openai.com/static-rsc-4/PHd0Yl_r5jCgDwPGvd7uawbxvFpbLgNb1tVo5H8O07xEg2AyDcpOt0XSo3bDqUovAlB6ov0ARpgQDm0t3yJnxCTOxYL2COHNHpYOaNjLk3h9M8j2ScHmgYcKdDhntQ53QdNxmFYs-EBFx_FCeWZejcU4dMX0TXL09Ez1U02Gz2jhG5FCH9LCnwMPKN8zXNXO?purpose=fullsize
https://images.openai.com/static-rsc-4/mt6483-xrKqOzxpXf_9yx3cFVGQ9Af4sVsi_Q-pGcBfJzgHKilF9YP4ktrDHTQQvz7a3bQQXg7juUOHUCBOgvu6_ct3X8q9tgh6T0q4gRun9zR-s8vLNsGr2rphJtEabJEM26Hloc2kQJBh1qOD4yDJatlVwUnXqIwXxhdM9BDDDbYeymVVtVxZGeYAujI0y?purpose=fullsize
https://images.openai.com/static-rsc-4/XdCey3kOcWbMBXNWmfZebmtUZTRu3sR-obFqu97PxG4FkOu--4ZL9HROeHxB6KJ76fF_qKTP5RBBq1-Ak9ElUhNX_YDpxhBNUymQ-dTpqv_qb2eLXlBSG2s4kC9SpHan7Gyz1UGhVgfrn9c06_DzINQt3d9xhcEJhxoE460UwPdggEAUN1ujrmgqAfAHfcGJ?purpose=fullsize

5

πŸ” Penjelasan

  • Handler β†’ mengirim pesan antar thread
  • Looper β†’ mengatur antrian pesan

🧠 Narasi

Digunakan untuk komunikasi antara background thread dan main thread.


7. ⏳ AsyncTask (Deprecated)

https://images.openai.com/static-rsc-4/btLVwcIndz8QMi1qQ_tM35LjMbrP9fYFHTiMSoiXkvIwvJDqc6H8jrWbGjN6LumrLUdONNwbmN022OKudBGOYF8zemD4WB7_8QvS5HWWTrbGqHYbdtKqFMJPyL2zgpm2Y0VMsWpZ9wHzVCvhBZKJZzt_4IdohjKrdKbxENhN7AcvU1Mhf5m5xyhDQaTlWWdi?purpose=fullsize
https://images.openai.com/static-rsc-4/9pzDAbSGfFQ4sHfbob_ZL0SOrs5vUKROAOT1LATQSJcn7O5L9qEYfc46RCQmyiklV7SF8Ahvgskvx5BjBbDDUraLqqK5Cxib0xRyH8X2sAI0isukrIGdi4ciRfwqXtPoPlT4FjS_zkJYDrE_FfPI0X0pfyzIeCVwz2dlbt-7O8OXMoil1EUlndPcefLYVLFZ?purpose=fullsize
https://images.openai.com/static-rsc-4/s0Fr0b82x0mbatGvIkDO3QqKfhGAkYY94D-qHaJWawxj5IGRXDR3uxOFR_YrtLV5mVjAexcAkSyg49wKurA8bmsGVOx2D0DDivqa7UUM7zlINo7gl2zIyljccQuIZuOCwj19w3-oTfoD5I3E8ljk5aWqOvZmTgeHCDoFU1Mnd6uASwOiboHEP16H6IlLvaZp?purpose=fullsize

6

πŸ” Penjelasan

AsyncTask dulu digunakan untuk background task sederhana, tetapi sekarang sudah deprecated.

🧠 Narasi

Penggunaan AsyncTask sudah tidak direkomendasikan karena keterbatasan dan potensi memory leak.


8. πŸš€ Kotlin Coroutines (Modern Approach)

https://images.openai.com/static-rsc-4/AC0aia0EU6SFkKcEUP3XwtHFWZfuRz59xqs3E4vkn76-yZcYH6D43dQwxxK-3aKchX7_YT4LO6rPFLa5nm20LDqTSPpOFOU3oGR4CrOtjP9_JyPSOBpHrtxBP98Rrvjf0Dv19sPkq_y0UuwV4ebVPxGZGg2yl73g8wTzMapYZJX9O-qbf8QBmeYkLiote-2I?purpose=fullsize
https://images.openai.com/static-rsc-4/1fBW49gHq9kJvdSG1ntaSVxBBYevvZF01bAhujju7tCbNpIPVNPE1oegBXbGFIowZrUt2Nuz7NnswgpAGSzSoc9T6iCxxwq7QQk9dyRk40an6DCU2N0Tf7vyvZLRkiCFM3K94UQbm_CSiPX_995j776fgFPnXN8J4dd_edHMLe6gJ-kcerW-bm9mepyMTXee?purpose=fullsize
https://images.openai.com/static-rsc-4/Nv0Se8TVssr0rcRwoHDKWXM3ZxTN3hvuu5afgiVQ8fJER_-eE4Bv5RYFI-F6dMXwIWMemXqXhaBL32Kk3eTVT5-VKJ8a3wBUgLWha18VotRxzScpqA4AdcyczeisKHqAC2FHx9wsXZ6-D-dTz67EPAA-tudS9_xfJFcWnZrTxOESwfcCy7fv59w_7GBTxEUz?purpose=fullsize

7

πŸ” Penjelasan

Coroutine adalah cara modern untuk menjalankan asynchronous task dengan kode yang lebih sederhana.

πŸ“Œ Contoh

GlobalScope.launch {
val data = fetchData()
}

🧠 Narasi

Coroutines membuat kode asynchronous terlihat seperti synchronous, sehingga lebih mudah dipahami.


9. πŸ” Dispatcher dalam Coroutine

https://images.openai.com/static-rsc-4/N0T6ezsuMh9-pwSBCY1APWAW7Zhn1joatH83j8Wk6g8cpZEvgnO55sJuXhY-vmvjqO_S1fntqwElwjGzJLW6EifUglD0KLNDvu7KRKtumz-M740a-CAGLqCnr0tu742YCTbOM0M22cM-5R6Yx7nZk9bI9WmSSWkcA6MmYHmygiWEa3YTkR84-vQOLbR9m-wk?purpose=fullsize
https://images.openai.com/static-rsc-4/EqkJVE0aBw8pzlRwYCdKxRI_Vz18judQkZ_YKz4bbCaMMm_Uh5Hki2opXPR3WMH-GJZG0l8Kg-ODMcpR9nMXZ8YWJQNM4mGUuucuzQ8T4czEiCJM-_jN8aLDKgbw-NY2e9bk1mTzor3111r35lfFFgZwuqO8WQZg0C9F157ASms7GJmrKfPUOycaD6-vn7Vb?purpose=fullsize
https://images.openai.com/static-rsc-4/X_Mscf0PPE-Yp_odTAaOReod4j39kGLrLPaLDOzcoBisncZT-pwgtMHfKJiKEHr7Z_veFSirOX1mNoxD1YlIGEnLf1w6bFGChLEQVNUhf6M3l8_SMdKKnCtJoawZUTeFm3MUQHdnrR1gSntkyz22QyXdB3G-5pNfWsVMB_JyCRy-G_ku-cMBl-Q04TvqPrfU?purpose=fullsize

7

πŸ” Jenis Dispatcher

DispatcherFungsi
MainUI Thread
IOOperasi jaringan/database
DefaultCPU intensive task

🧠 Narasi

Dispatcher menentukan di thread mana coroutine dijalankan.


10. πŸ”„ Background Service

https://images.openai.com/static-rsc-4/UBI3byPjTRf5uFnFsdLmPvl4DI4MfkfqqAL8LySUS0u35GO70dfcT0ZmD6Xb1TIXdtgxEABNvtoTJgXCVegjVPArVdkJjg0DdfJ_OfhZhT3tkezcAneI0cwujHXpHiYX5MVNEQ8PoTNnSQG99TffAQgTRblBLtPkWbNxph4WbHrwEO79o1T_D4LDcB7PNekv?purpose=fullsize
https://images.openai.com/static-rsc-4/lUjxMo7mg-HyAgh7tDNJa4p8AtcU7f2NEaPFpViwXmxGPUpjpnZWtX_n2_RpC9kgvG7Mo7I891sRwVeimRzWM7Yp-V5aNMTZrrh8AIrll2nQN0DhEjr0oKppvyR2v1Kj0kl6BDfMjfClu7a7VnXu2a-8MVhRfhFJlf2OTxVfzBIttnaDhlG8aAiJJRLxMwrA?purpose=fullsize
https://images.openai.com/static-rsc-4/XkXSqsoiwo8siGc5ayU07QE-OBKFDwQFssqoIpyZ-2NO85LmaU2WpcJvj_wPllAtHydT06DUeB9i2fOkBxZzou1iTgZEISc1_rtIjXZAdPMcvUm2bwbXqk5GOS3WRy29f-5EXEH2duPcKXFfuq1G7u8NTpn3H-_qBS3PYsopGRhb93GTqvsXsIwIV1_uydmg?purpose=fullsize

8

πŸ” Jenis Service

  • Foreground Service
  • Background Service
  • IntentService

🧠 Narasi

Service digunakan untuk menjalankan proses jangka panjang seperti musik atau tracking lokasi.


11. ⚑ WorkManager

https://images.openai.com/static-rsc-4/uSWlId4VCvF0YFjOY-msbbGTGGOMr2Wsr_4lyDq0rAdQrsTpCMs99MbguykJb3kGMzmQ-IEuA8_S5KAU4nNc_YN9D5qdp26MiBZyBScdVTmzjvZOzwcjGBHm_xy8N86ylhaCXbJfb4BVlIH7tYGvqvGXZzqSw_-u27qCF1ZSIkStKxGjGURms2EPksCrBskm?purpose=fullsize
https://images.openai.com/static-rsc-4/fjVB2VnY_trw4hNw17IidqnHMzAvzW-_FMbisInaOngbBWXxW7ynbCDpEUV5rgSdzXYwnPMKvzGZqFrYR0wvPAUwswQGSaSvjOyMvxYlKwvLbIJx7_QiqAw3m9cA_idkyWrmquDa7arJ66s8jL5uERkI1HJQ6MkhWwClARJp4PZ0OVw6pu9FUGexpxJePH-z?purpose=fullsize
https://images.openai.com/static-rsc-4/gUFPdTC0-HXmno-kiLAFMdXwO_GAsMdv2had1q9ZXXiDLwNMLTT8zYVui6u11i0VuM_woPZz0lu1xY2y3LkeUR6c9k3M6lRXnjwUDoP_-Yaf8Of7Tz_Jm-Gyrs7vbbWcQUz6Y0ggL46PA2QkB7W-ovQFG9_UQqPAwfabnlANnOX3hCrOY_aA9IXUaWOSS68k?purpose=fullsize

7

πŸ” Penjelasan

WorkManager digunakan untuk menjalankan task yang dijadwalkan atau berulang.

🧠 Narasi

Cocok untuk sinkronisasi data, backup, atau notifikasi berkala.


12. ⚠️ Permasalahan Umum

https://images.openai.com/static-rsc-4/Ki834Za0lrE8VsXyZJ7L0X3hdgne6cOHN5pI6WdnNEE0BoYXrv6SSoPjZgs5CUVA_Ufzpnjl9oRyFQ05nvCaGRnKsIqncRoJ4K_B9d0HavK1qq1RLGTNywazZ1LwlJV3FkXbQ6YfDK2HrFvSFOQapjJkap0_1JOaG1IlSsOuB_Mj2CXy0B1gNosdexCEBE2F?purpose=fullsize
https://images.openai.com/static-rsc-4/TV6kGs9SfQyC61ss1P-uD9EonX0RV9GB5nIqgC5lDpEdJwMiEcKV-8-wMPNeSCFV4EXqNZkwQ-XLGQfAn_8gXR95uwU_gpYnoOZi_EnPleb2U5uz1XYpLUC0bx8MGULyxDFlyHIkVqT-vC41OiY0Db2wJuKuvU-MwWe_KYj8LEOGazwM0ud9vUxGKFgQNivR?purpose=fullsize
https://images.openai.com/static-rsc-4/rdb6z3g-gpC4GtqQuT4T3TsR-uzp-RWGb0u-InYWbAOhEQAbAecLl5XItFZRD-cVUUgQ8bkoP-9c4_KkqaTTN7W1mosRq12CKGG1dEk6Azm05GlmZ4SQS5z3ukAexecttJ1M9oWxsyR3mQDJ9Xopit0cXfoVTVQadZzasEsbVdNOm7m56R6dwM2yAUbD0Vlo?purpose=fullsize

7

πŸ” Masalah

  • Race condition
  • Deadlock
  • Memory leak
  • Thread tidak sinkron

🧠 Narasi

Masalah concurrency dapat menyebabkan bug yang sulit dideteksi.


13. πŸ’‘ Best Practice

πŸ” Tips

  • Gunakan Coroutine
  • Hindari blocking main thread
  • Gunakan WorkManager untuk task terjadwal
  • Kelola lifecycle dengan benar

🧠 Narasi

Dengan mengikuti best practice, aplikasi akan lebih stabil dan responsif.


πŸ“Œ Kesimpulan

Background Process dan Threading adalah konsep penting dalam pengembangan aplikasi mobile untuk menjaga performa dan responsivitas. Dengan menggunakan coroutine dan tools modern, pengembang dapat mengelola proses background dengan lebih efisien.


🎯 Latihan / Tugas

  1. Buat proses background sederhana
  2. Implementasikan coroutine untuk API
  3. Tampilkan loading saat proses berjalan
  4. Gunakan WorkManager untuk task berkala