Skip to content

Commit 690ddf2

Browse files
committed
fix(AbstractMviViewModel): close eventChannel onCleared
1 parent 5a39df4 commit 690ddf2

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

mvi/mvi-base/src/main/java/com/hoc/flowmvi/mvi_base/AbstractMviViewModel.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.hoc.flowmvi.mvi_base
22

33
import android.os.Build
4+
import androidx.annotation.CallSuper
45
import androidx.lifecycle.ViewModel
56
import androidx.lifecycle.viewModelScope
67
import kotlinx.coroutines.channels.Channel
@@ -18,7 +19,7 @@ import timber.log.Timber
1819
abstract class AbstractMviViewModel<I : MviIntent, S : MviViewState, E : MviSingleEvent> :
1920
MviViewModel<I, S, E>, ViewModel() {
2021
protected val logTag by lazy(LazyThreadSafetyMode.PUBLICATION) {
21-
this::class.java.simpleName.let { tag ->
22+
this::class.java.simpleName.let { tag: String ->
2223
// Tag length limit was removed in API 26.
2324
if (tag.length <= MAX_TAG_LENGTH || Build.VERSION.SDK_INT >= 26) {
2425
tag
@@ -34,6 +35,12 @@ abstract class AbstractMviViewModel<I : MviIntent, S : MviViewState, E : MviSing
3435
final override val singleEvent: Flow<E> get() = eventChannel.receiveAsFlow()
3536
final override suspend fun processIntent(intent: I) = intentMutableFlow.emit(intent)
3637

38+
@CallSuper
39+
override fun onCleared() {
40+
super.onCleared()
41+
eventChannel.close()
42+
}
43+
3744
// Send event and access intent flow.
3845

3946
protected suspend fun sendEvent(event: E) = eventChannel.send(event)

0 commit comments

Comments
 (0)