设置为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)
}