Android 知道可以控制活动(屏幕)和保存值的范围吗?

Android 知道可以控制活动(屏幕)和保存值的范围吗?,android,Android,这个问题最值得讨论。 在许多情况下,我们希望完成的活动不仅仅是一项。 我们始终希望向其他活动发送值 在传统方式中,我们使用eventBus,有时使用startActivityForResult。我认为这两种方式都不是一个完美的主意 现在,我们有了viewModel,它有一个存储让片段加载主viewModel。在其他一些客户端(比如我不擅长的reactive),它们有一个存储来传输数据 所以我更喜欢有没有更好的办法让这项活动更容易进行 实际上,我在这方面没有做太多的工作。但是一些代码可能对这方面有

这个问题最值得讨论。 在许多情况下,我们希望完成的活动不仅仅是一项。 我们始终希望向其他活动发送值

在传统方式中,我们使用eventBus,有时使用startActivityForResult。我认为这两种方式都不是一个完美的主意

现在,我们有了viewModel,它有一个存储让片段加载主viewModel。在其他一些客户端(比如我不擅长的reactive),它们有一个存储来传输数据

所以我更喜欢有没有更好的办法让这项活动更容易进行

实际上,我在这方面没有做太多的工作。但是一些代码可能对这方面有用

interface IScope {
    fun registerScreens(screen: IScreen)

    fun unRegisterScreens(screen: IScreen)

    fun finishAll()
}
代码只是我的想法,肯定有很多问题。 即使对于这种想法,我想知道是否有图书馆做过这样的事情,或者是否有人对这种想法有好的想法

interface IScreen {

    fun getScope(): IScope

    fun finish()


}
class ScopeSample: IScope {

     val scopeData: LiveData<Any>


}
class Activity1: IScreen {

    override fun getScope(): IScope {
       return Scope.create("scopeKey")
    }

    override fun onCreate() {
       getScope().registerScreen(this)
       getScope<ScopeSample>().scopeData.observe(customLifeCycleOwner,{})
    }

    override fun onDestroy() {
       getScope().unRegisterScreen(this)
    }

    override fun finish() { finish() }
}
class Activity2: IScreen {

    override fun getScope(): IScope {
       return Scope.create("scopeKey")
    }

    override fun onCreate() {
       button2.setOnClickListener() { getScope().scopeLiveData.updateValue()
       button.setOnClickListener() { getScope().finishAll() }
    }

    override fun finish() { finish() }
}