我可以在同伴对象内共享ViewModel吗?

雷菲

我在Android上的MVVM有问题。我想在两个活动之间共享数据。在其中一个中,我创建了ViewModel(MainActivity),然后在同一个对象中将ViewModel共享给另一个活动(SecondActivity)。安全吗?是否存在另一种推荐方法?

感谢您的帮助和解释

    class SecondActivity : AppCompatActivity() {    

    lateinit var viewModelTwo: ViewModelForActivities

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)

    }


    override fun onStart() {
        super.onStart()
        viewModelTwo = MainActivity.viewModel
        textViewTwo.setText(viewModelTwo.licznik.toString())

    }
}

class MainActivity : AppCompatActivity() {

    companion object{
        lateinit var viewModel: ViewModelForActivities
    }


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        viewModel = ViewModelProviders.of(this).get(ViewModelForActivities::class.java)

        textViewOne.setOnClickListener {
            val intent = Intent(applicationContext, SecondActivity::class.java)
            viewModel.licznik++
            startActivity(intent)

        }

    }
}    

该应用程序可以正常运行,但是我担心安全性。这是正确的方法吗?

常用软件

安全吗?

我非常有信心与开发人员的ViewModel想法背道而驰。特别要记住,a销毁后会ViewModel被清除LifecycleOwner,因此您可能会遇到共享ViewModel对象被清除而又不想清除它们的问题。

我个人不会使用这种方法。

是否存在另一种推荐方法?

这是三个:

  • 有一个活动和两个片段,ViewModel片段之间共享ViewModel在片段之间共享a只是使用ViewModelProviders.of(requireActivity())而不是的问题ViewModelProviders.of(this)或者,如果您使用的是“导航”组件,则可以ViewModel对特定的导航图使用作用域。

  • 通过Intent附加功能在活动之间传递数据

  • 让公共数据由存储库管理,通过Intent附加功能在活动之间传递标识符以在存储库中查找该数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以在Go中使用共享对象吗?

Kotlin在junit测试中共享同伴对象

为什么我可以在Kotlin的同伴对象之外访问私人娱乐活动?

我可以在反应中找到 ref 对象内的元素吗?

我可以将ng-repeat对象设置为model来共享细节吗?

我可以在项目之间共享Wiki吗?

我可以告诉Hibernate一个类是不可变的,以便它可以共享对象以节省构造成本吗?

使用Java Streams,我可以基于与具有相同变量的辅助对象列表共享的变量来过滤对象列表吗?

SparkContext无法在同伴对象内序列化

我们可以将ViewModel分配给ASP.Net MVC中的ViewData对象吗?

我可以在机器之间共享我的tarsnap密钥文件吗?

我可以将文本的默认类型定义为对象类型内的关键字吗?

我可以在Scala中声明其伴随对象内的类吗?

可以在对象之间共享MySQL连接器吗?

TclOO对象可以在解释器之间共享/别名吗?

在同伴对象中获取同伴类

我可以在“ applicationWillTerminate:”中归档对象吗?

我可以在 HttpParams 中发送对象吗?

我可以从函数返回CRecordset对象吗?

我可以访问临时对象的成员吗?

我可以修改本地 javascript 对象吗?

我可以重用请求对象吗?

我可以从共享文件中导入模块列表吗?即我可以进口进口吗?

RSpec:我可以禁用某些共享示例测试吗?

我可以检查地址是否在共享内存中吗?

我可以只构建 glibc malloc 作为共享库吗?

我可以在终端之间进行sudo共享缓存的凭据吗?

CUDA,使用共享内存可以提高我的性能吗?

我可以在共享结构中允许任意字段吗?