如何完成当前 activity 并启动新的 activity Rx 方式?

How to finish current activity and launch a new activity Rx way?

我想在 Rx 中执行以下操作。 startActivity(intent) 保证被调用,因为 finish() 只是一个排队的异步调用:

private fun launchNewActivity(){
  ...
  finish()
  startActivity(intent)
}

所以在 Rx 方式中,我正在做这样的事情,两者都打包在自己的可观察对象中(要求):

private fun launchNewActivity(): Observable<Any>{
  ...
  return Observable.concat(
    Observable.just(finish())
    Observable.just(startActivity(intent))
    ...
  )
}

但是,我担心 Rx 方式,activity 可能 在调用 startActivity 之前完成。那会发生吗?

实际上你调用的顺序错了。在调用 finish() 之前,您应该先调用 startActivity()。尽管如此,将此过程封装在 Observable 中可能会引入意外行为,因为 startActivity() 应该在 UI 线程上调用,因为它会触发 UI animation/transition 到另一个 Activity.

您要做的是在 onNext()onComplete() 回调中同时调用 startActivity()finish()。但如果您真的需要封装它,您可以按照以下简单步骤操作:

1.创建一个处理 Activity switching

的方法
private fun launchNewActivity() {
    startActivity(Intent())
    finish()
}

2。将这个方法封装在Observable

Observable.fromCallable(this::launchNewActivity)

您需要将 Observable 放在 CompositeDisposableDisposableObserver 中。

您可以在完成此活动之前开始下一个 Activity。

首先开始你的 activity startactivity(Intent(this,NextActivity::Class.java) 在调用 finish() 之后,它会完成你当前的 activity.

在这里你可以找到代码:

public fun startNewActivity(){
 startActivity(Intent(this,NewActivity::Class.java))
 finish()
}