在一个现有项目上工作时,我发现了这个相当不常见的实现部分(至少对我而言)。由于我与之前已经离开的开发人员没有联系,在我将其视为简单地从我们代码库的另一部分复制和粘贴代码的情况之前,我想向 SO 社区询问这个问题。
这是扩展 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 中,有一个调用 finish() 的事件订阅。
@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