Saat bekerja dengan coroutine di Android, penting untuk memahami berbagai cakupan yang tersedia untuk Anda. Dalam artikel ini, kita akan menjelajahi empat cakupan yang paling umum digunakan: GlobalScope , ViewModelScope , LifecycleScope , dan reminderCoroutineScope . Kami akan memeriksa perbedaan antara cakupan ini dan memberikan contoh kode untuk mengilustrasikan penggunaannya.
GlobalScope
GlobalScope adalah cakupan tingkat atas yang dapat digunakan untuk meluncurkan coroutine yang memiliki masa hidup global . Coroutine yang diluncurkan dalam cakupan ini akan terus dijalankan hingga aplikasi dihentikan atau hingga dibatalkan secara eksplisit. GlobalScope harus digunakan dengan hemat, karena dapat dengan mudah menyebabkan kebocoran memori dan masalah lainnya.
Berikut adalah contoh cara menggunakan GlobalScope untuk meluncurkan coroutine yang mencatat pesan setiap detik:
GlobalScope.launch {
while (true) {
Log.d("Coroutine Example", "Logging a message every second")
delay(1000)
}
}
Berikut adalah contoh cara menggunakan ViewModelScope untuk meluncurkan coroutine yang mengambil data dari repositori:
class MyViewModel(private val repository: MyRepository): ViewModel() {
fun fetchData() {
viewModelScope.launch {
val data = repository.getData()
// Update UI with data
}
}
}
Berikut adalah contoh cara menggunakan LifecycleScope untuk meluncurkan coroutine yang mengambil data dari repositori:
class MyActivity : AppCompatActivity() {
private val viewModel: MyViewModel by viewModels()
private val scope = lifecycleScope
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
scope.launch {
val data = viewModel.getData()
// Update UI with data
}
scope.launchWhenCreated {
val data = viewModel.getData()
// Update UI with data
// launchWhenCreated will launch coroutine if the lifecycle is at least on create state and gets suspended if it's on destroy state.
}
scope.launchWhenStarted {
// Perform operations when the Activity is in the Started state
// launchWhenStarted will launch coroutine if the lifecycle is at least on start state and gets suspended if it's on stop state.
}
scope.launchWhenResumed {
// Perform operations when the Activity is in the Resumed state
// launchWhenResumed will launch coroutine if the lifecycle is at least on resume state and gets suspended if it's on pause state.
}
}
}
RememberCoroutineScope adalah cakupan yang dapat digunakan dalam fungsi yang dapat disusun di Jetpack Compose . Coroutine yang diluncurkan dalam cakupan ini akan dibatalkan secara otomatis saat fungsi yang dapat disusun dihapus dari komposisi. Ini menjadikannya pilihan yang baik untuk melakukan operasi asinkron yang terkait dengan siklus hidup fungsi yang dapat disusun.
Berikut adalah contoh cara menggunakan reminderCoroutineScope untuk meluncurkan coroutine yang mengambil data dari repositori dalam fungsi yang dapat disusun:
@Composable
fun MyComposableFunction(viewModel: MyViewModel) {
val scope = rememberCoroutineScope()
LaunchedEffect(Unit) {
val data = viewModel.getData()
// Update UI with data
}
}
Jika Anda memiliki saran dan komentar, silakan tentukan.
Untuk lebih jelasnya;
Turo adalah pasar berbagi mobil terbesar di dunia tempat tamu dapat memesan mobil apa pun yang mereka inginkan, dan di mana pun mereka menginginkannya, dari komunitas tuan rumah tepercaya yang bersemangat. Pengembang di Turo baru-baru ini banyak berinvestasi dalam meningkatkan kinerja startup aplikasi Android mereka.
Mari selami lebih dalam dunia arsitektur pengembangan Android. Dalam panduan komprehensif ini, kami menjelajahi berbagai pola arsitektur, kerangka kerja, dan praktik terbaik untuk membantu Anda membuat aplikasi Android yang tangguh, dapat diskalakan, dan dapat dipelihara.
Pendahuluan:Selamat datang, para pembaca yang pemberani, dalam sebuah perjalanan yang akan membawa kita ke kedalaman tergelap planet kita. Di blog ini, kami menyelidiki dunia penuh teka-teki Palung Mariana, mengungkap rahasianya yang tersembunyi dan mengungkap kebenaran mengerikan yang ada di bawah permukaannya.
Pikiran rasional mana pun tahu bahwa lingkaran politik dan media didominasi oleh kiri, bahkan paling kiri, suatu keadaan yang menciptakan ketidakseimbangan dalam wacana politik. Di bidang agama, ketidakseimbangan ini terlihat jelas: surat kabar dan jaringan sayap kiri tidak terburu-buru membela iman Kristen.
Kita sering menemukan diri kita berjuang untuk menerapkan apa yang kita tahu baik untuk kita. Dari memberi tahu orang penting bahwa kita mencintai mereka hingga mengingat untuk berbicara seperti bajak laut, akan selalu ada orang yang mengklaim bahwa acara sehari, seminggu, atau sebulan tidak diperlukan karena mereka sudah melakukan hal-hal itu.
Apa yang lama sekarang menjadi baru lagi dan apa yang dulu berkilau berkilau sekarang terasa kusam. Saya tidak berbicara tentang jeans JNCO yang kembali populer di antara anak-anak keren di pusat kota bersama dengan mode akhir 1990-an lainnya.