簡體   English   中英

如何完成當前活動並啟動新活動接收方式?

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

我想做以下但在 Rx 中。 startActivity(intent)保證會被調用,因為finish()只是一個排隊的異步調用:

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

所以在 Rx 方式中,我正在做這樣的事情,其中​​兩者都打包在自己的 observables 中(要求):

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

但是,我擔心在 Rx 方式中,活動可能會在調用 startActivity 之前完成。 那會發生嗎?

實際上,您以錯誤的順序調用它。 您應該在調用finish()之前先調用startActivity() finish() 盡管如此,將此過程封裝在 Observable 中可能會引入意外行為,因為startActivity()應該在 UI 線程上調用,因為它會觸發 UI 動畫/轉換到另一個 Activity。

您想要做的是在onNext()onComplete()回調中調用startActivity()finish() 但如果您真的需要封裝它,您可以按照以下簡單步驟操作:

1.創建一個處理Activity切換的方法

private fun launchNewActivity() {
    startActivity(Intent())
    finish()
}

2.將這個方法封裝在Observable中

Observable.fromCallable(this::launchNewActivity)

您需要將 Observable 放在CompositeDisposableDisposableObserver之上。

您可以在完成此活動之前開始您的下一個活動。

首先啟動您的活動startactivity(Intent(this,NextActivity::Class.java)並在調用finish()后完成您當前的活動。

在這里你可以找到代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM