[英]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 放在CompositeDisposable
或DisposableObserver
之上。
您可以在完成此活動之前開始您的下一個活動。
首先啟動您的活動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.