Skip to content

Commit e1949a6

Browse files
committed
Use ViewmodelScope instead of creating coroutine scope
1 parent 4828307 commit e1949a6

File tree

3 files changed

+7
-13
lines changed

3 files changed

+7
-13
lines changed

app/build.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ android {
2929
targetSdkVersion 30
3030
versionCode 1
3131
versionName "1.0"
32-
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
32+
multiDexEnabled true
3333
vectorDrawables.useSupportLibrary = true
3434
}
3535
buildTypes {
@@ -79,6 +79,7 @@ dependencies {
7979

8080
// ViewModel and LiveData (arch components)
8181
implementation "androidx.lifecycle:lifecycle-extensions:$version_lifecycle_extensions"
82+
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
8283

8384
// Logging
8485
implementation "com.jakewharton.timber:timber:$version_timber"
@@ -90,6 +91,9 @@ dependencies {
9091
implementation "androidx.room:room-runtime:$version_room"
9192
kapt "androidx.room:room-compiler:$version_room"
9293

94+
// Kotlin Extensions and Coroutines support for Room
95+
implementation "androidx.room:room-ktx:$room_version"
96+
9397
// WorkManager
9498
implementation "android.arch.work:work-runtime-ktx:$version_work"
9599
}

app/src/main/java/com/example/android/devbyteviewer/viewmodels/DevByteViewModel.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import android.app.Application
2121
import androidx.lifecycle.AndroidViewModel
2222
import androidx.lifecycle.ViewModel
2323
import androidx.lifecycle.ViewModelProvider
24+
import androidx.lifecycle.viewModelScope
2425
import com.example.android.devbyteviewer.database.getDatabase
2526
import com.example.android.devbyteviewer.repository.VideosRepository
2627
import kotlinx.coroutines.CoroutineScope
@@ -41,19 +42,12 @@ import kotlinx.coroutines.launch
4142
class DevByteViewModel(application: Application) : AndroidViewModel(application) {
4243

4344
/**
44-
* This is the job for all coroutines started by this ViewModel.
4545
*
46-
* Cancelling this job will cancel all coroutines started by this ViewModel.
4746
*/
48-
private val viewModelJob = SupervisorJob()
4947

5048
/**
51-
* This is the main scope for all coroutines launched by MainViewModel.
5249
*
53-
* Since we pass viewModelJob, you can cancel all coroutines launched by uiScope by calling
54-
* viewModelJob.cancel()
5550
*/
56-
private val viewModelScope = CoroutineScope(viewModelJob + Dispatchers.Main)
5751

5852
private val database = getDatabase(application)
5953
private val videosRepository = VideosRepository(database)
@@ -70,12 +64,7 @@ class DevByteViewModel(application: Application) : AndroidViewModel(application)
7064
val playlist = videosRepository.videos
7165

7266
/**
73-
* Cancel all coroutines when the ViewModel is cleared
7467
*/
75-
override fun onCleared() {
76-
super.onCleared()
77-
viewModelJob.cancel()
78-
}
7968

8069
/**
8170
* Factory for constructing DevByteViewModel with parameter

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ buildscript {
2727
version_gradle = '4.0.1'
2828
version_kotlin = "1.3.72"
2929
version_lifecycle_extensions = "2.2.0"
30+
lifecycle_version = "2.2.0"
3031
version_room = "2.2.5"
3132
version_appcompat = "1.2.0"
3233
version_fragment = "1.0.0"

0 commit comments

Comments
 (0)