Android 如何完成当前活动并启动新的活动接收方式?
我想做以下,但在接收。Android 如何完成当前活动并启动新的活动接收方式?,android,android-activity,rx-java2,Android,Android Activity,Rx Java2,我想做以下,但在接收。startActivity(intent)保证被调用,因为finish()只是一个排队的异步调用: private fun launchNewActivity(){ ... finish() startActivity(intent) } 以Rx的方式,我正在做这样的事情,两者都打包在各自的可观察对象中(需求): private fun launchNewActivity():可观察{ ... 返回可观察的.concat( 可观察的。刚刚(finish())
startActivity(intent)
保证被调用,因为finish()
只是一个排队的异步调用:
private fun launchNewActivity(){
...
finish()
startActivity(intent)
}
以Rx的方式,我正在做这样的事情,两者都打包在各自的可观察对象中(需求):
private fun launchNewActivity():可观察{
...
返回可观察的.concat(
可观察的。刚刚(finish())
可观察。只是(星体触觉(意图))
...
)
}
然而,我担心Rx的方式,活动可能会在调用startActivity之前完成。那会发生吗 事实上,你叫它的顺序不对。在调用
finish()
之前,应该先调用startActivity()
。不过,将此过程封装在可观察的中可能会引入意外行为,因为startActivity()
应该在UI线程上调用,因为它会触发UI动画/转换到另一个活动
您要做的是在onNext()或onComplete()内调用startActivity()
和finish()
。但如果您真的需要封装它,您可以按照以下简单步骤进行操作:
1。创建处理活动切换的方法
private fun launchNewActivity() {
startActivity(Intent())
finish()
}
2。将此方法封装在Observable中
Observable.fromCallable(this::launchNewActivity)
您将希望将上述可观察内容放入一个可组合可配置的
或一个可处置的观察者
您可以在完成此活动之前开始下一个活动
首先开始您的活动startactivity(Intent(this,NextActivity::Class.java)
在调用finish()
后,它会像完成当前活动一样工作
在这里您可以找到以下代码:
public fun startNewActivity(){
startActivity(Intent(this,NewActivity::Class.java))
finish()
}
尝试先调用startActivity而不是finish在我们的用例中,我们实际上不想这样做。有一种边缘情况,首先调用finish()
具有优势。finish()
返回的类型是什么,并随observable一起提供?实际调用类似于finishActivityAction()
,它调用finish()并返回一个对象“RoutingResult”。
public fun startNewActivity(){
startActivity(Intent(this,NewActivity::Class.java))
finish()
}