我正在尝试设置FirebaseMessagingService,并且正在为导航逻辑而苦苦挣扎。
当用户点击通知时,应启动not the main
的活动。
我知道可以像这样自己开始一项活动
val pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT)
或者像这样的后退堆栈
val pendingIntent = TaskStackBuilder.create(this).run {
addNextIntentWithParentStack(intent)
getPendingIntent(0, PendingIntent.FLAG_ONE_SHOT)
}
第一种变体的问题在于,如果application is not running
,那么当用户关闭意图活动时,整个应用程序都会关闭,因为它后面没有后备堆栈。
第二个变体的问题在于,如果app is running
和current activity is not the parent of the intent
活动,那么当用户关闭意图活动时,他无法返回到前一个,因为它被新的反向堆栈所取代。
我需要的是:当用户关闭意图活动时,然后启动主活动,但前提是没有可用的反向堆栈。
知道如何解决这个导航问题吗?
为我自己的问题发布解决方法。
在启动主活动时设置一个标志,并在完成通知活动时检查它。
在主活动中
companion object {
var started: Boolean = false
}
override fun onCreate(savedInstanceState: Bundle?) {
started = true
在"通知"活动中
override fun onBackPressed() {
if (!MainActivity.started)
startActivity(Intent(this, MainActivity::class.java))
super.onBackPressed()
}