设置为SingleTask的Activity,第一次会正常走onCreat等等的生命周期回调,但是如果处于活动栈的情况下再打开此活动,系统便不会再调用通常情况下页面初始化的onCreate方法,而是调用onNewIntent方法,便利用OnNewIntent完成对intent数据的刷新,从而达到传值的目的:
override fun onCreate(savedInstanceState: Bundle?) {
binding = DataBindingUtil.setContentView(this, R.layout.activity_log)
super.onCreate(savedInstanceState)
context = this@LogActivity
init()
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
//这句最重要,不然还是旧intent
setIntent(intent)
init()
}
private fun init() {
setToolbarTitle(getString(R.string.toolbar_notification_log_title))
showBackButton(View.OnClickListener {
finish()
})
toggleToolbarTitleState(true)
fileName = intent.getStringExtra("fileName")
datas = LogUtils.ReadFileContent(LogUtils.NOTIFICATION_LOG_FILE_PATH + "/" + fileName)
linearLayoutManager = LinearLayoutManager(this)
binding.rvDebugLog.layoutManager = linearLayoutManager
binding.rvDebugLog.adapter = LogAdapter(this, datas)
}
本文讲解了设置为SingleTask的Activity如何在不调用onCreate方法的情况下,通过onNewIntent方法实现intent数据的刷新,从而达到传值目的,确保页面数据的实时更新。
356

被折叠的 条评论
为什么被折叠?



