小编dba*_*nes的帖子

ActivityViewModel 和惰性 ViewModelProvider 之间的区别?

ActivityViewModel 和惰性 ViewModelProvider 之间的区别?

我见过两种初始化视图模型的方法:

private val someViewModel: SomeViewModel by activityViewModels()
private val someOtherViewModel: SomeOtherViewModel by lazy {
        ViewModelProvider(this).get(SomeOtherViewModel::class.java)
}
Run Code Online (Sandbox Code Playgroud)

我知道lazy仅在需要时才初始化 ViewModel,这activityViewModels对于在片段之间共享数据很有用,但除此之外还有什么区别?

Android 文档说其activityViewModels范围仅限于 Activity,但这是否意味着如果在同一 Activity 内的多个片段中使用相同的视图模型,activityViewModels并且只创建一个在所有片段之间共享的实例?

android kotlin android-viewmodel

20
推荐指数
1
解决办法
2万
查看次数

Jetpack Compose ModalDrawer 和 Scaffold Drawer 之间的区别?

ModalDrawer()a和之间到底有什么区别Scaffold(DrawerContent)?我似乎记得在某处读到过它ModalDrawer()包含导航组件。我还认为我读到您不能使用 with ModalDrawerScaffold或者它们不能很好地协同工作。

您什么时候想使用其中一种而不是另一种?

android android-jetpack-compose

5
推荐指数
0
解决办法
208
查看次数

如何将 Compose LazyColumn 与协程/房间数据库结合使用?

我正在为自己编写一个简单的应用程序,以将 RSS 提要显示为项目列表,并认为这是一个了解@Compose lazyColumn. 我对它的代码之少感到震惊,没有 Adapter,没有 ViewHolder,没有 xml。令人惊讶的精简。

但是,如何将其设置为与Room Database使用协程从数据库中提取数据之类的情况一起工作呢?这里的官方文档讨论了rememberCoroutineScope()但没有解释在哪里定义它。将协程放置在 Surface 定义中感觉很奇怪,这可能就是它不起作用的原因。它会产生一个:@Composable invocations can only happen from the context of a @Composable function错误。

这需要通过a 来完成吗ViewModel?在现实世界中,存储库中的数据无论如何都将来自ViewModel,但现在我只想显示从互联网上提取的简单项目列表(即需要协程)。但是你如何处理ViewModel/Database 中的LiveDataor 呢?List<String>

有谁知道如何设置这个?我觉得这应该不难,但我不知道从哪里开始寻找答案。

前任:

class MainActivity : AppCompatActivity() {
   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       setContent {
           MyAppTheme {

               val composeScope = rememberCoroutineScope()
               Surface(color = MaterialTheme.colors.background) {
  
                    composeScope.launch{ // do network call
                        RssList(RssFetcher.fetchRss())  // how do you make …
Run Code Online (Sandbox Code Playgroud)

android kotlin kotlin-coroutines android-jetpack-compose

3
推荐指数
1
解决办法
2730
查看次数