在一個現有的項目上工作,我發現這是一個相當不常見的實現(至少對我而言)。由於我沒有與之前已經離開的開發人員聯繫,並且在我將此視爲僅僅從代碼庫的另一部分複製和粘貼代碼的情況之前,我想向SO社區詢問這一點。使用EventBus從基本活動完成活動?
這是你的延伸BaseActivity每天的活動,並實施:
class SomeActivity : BaseActivity(R.layout.some_activity) {
...
private fun close() {
if(backToMain)
finish()
}
else
goToMain(this)
}
companion object {
fun goToMain(activity: AppCompatActivity) {
val intent = Intent(activity, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
activity.startActivity(intent)
EventBus.getDefault().post(Event(Event.Type.ActivityFinish))
}
}
...
}
在BaseActivity.kt,有一個訂閱它調用結束事件()。
@Subscribe override fun onEvent(event: Event) {
when (event.type) {
Event.Type.ActivityFinish -> super.finish()
else -> {}
}
}
現在,爲什麼會有人用EventBus調用Activity.finish()
從擴展BaseActivity,而不是僅僅調用它,然後有(在上面SignActivity)? 即使SomeActivity實際上是片段,您也可以簡單地致電getActivity.finish()
。
*至於意圖的標誌,你也可以使用Activity.finishAffinity()
完成在後面堆棧中的所有活動,如果你的分SDK是16
預先感謝餵養我的好奇心。 :d
它可能是一個場景,'登錄=>註冊(上成功註冊,簽到殺死並採取用戶一些其它屏幕)=> Somesceen' –
這實際上是一個合法的情況。但是,這意味着兩個活動之間的溝通,而不是一個活動,它是擴展的基礎。 – Aba