美文网首页
kotlin flow(一)

kotlin flow(一)

作者: supter川 | 来源:发表于2022-11-01 10:46 被阅读0次

    数据流flow包含三部分

    1. 数据提供方:网络数据,数据库数据添加到数据流中
    2. 中介:可对数据进行拦截操作
    3. 数据使用方:则是消费数据流中的数据
    引用官方的图
    • 数据提供,模拟网络获取数据
      DataStore.kt
    class TestRepository(private val apis: Apis?) {
        val allBook: Flow<List<String>> = flow {
            delay(5000)
            var result = apis?.getBookList()
            if (result.isNullOrEmpty()){
                result = mutableListOf("A类","B类","C类","D类","E类")
            }
            emit(result)
        }
    }
    
    interface Apis {
        suspend fun getBookList(): List<String>
    }
    
    • 数据使用在view model中
      FlowViewModel.kt
    class FlowViewModel : ViewModel() {
        val mBooks = MutableLiveData<List<String>>()
        private val repository by lazy {
            TestRepository(loadClass())
        }
    
        fun getAllBook() {
            viewModelScope.launch {
                repository.allBook
                    .catch {
                        Log.d("MainViewModel", "getAllBook: Error")
                    }
                    .flowOn(Dispatchers.IO)
                    .collect {
                        mBooks.value = it
                    }
            }
        }
    
        private fun loadClass(): Apis? {
            val clazz = Class.forName("com.example.kotlindemos.Apis").kotlin
            val obj = clazz.objectInstance as Apis?
            return obj
        }
    }
    

    相关文章

      网友评论

          本文标题:kotlin flow(一)

          本文链接:https://www.haomeiwen.com/subject/kaxltdtx.html