我正在构建一个处理传入事件的Android应用程序。
当我收到1个此类事件时,如果我的应用程序位于前台,我会立即生成需要用户注意的AlertDialog。
但是,当应用程序在后台时,即使已生成AlertDialog,用户也看不到这一点。如果我手动返回我的应用程序,我会看到AlertDialog并且我可以单击“确定”或取消。
我尝试生成当我的应用在后台时显示的通知对话框。这有效,我把PendingIntent作为MainActivity。当我点击通知时,它会将我带回我的应用程序。但是,AlertDialog不再存在了。
比较点击通知和手动返回我的应用的日志,我注意到了一些差异。
当我手动返回我的应用程序时,我看到MainActivity立即恢复。但是,当我点击通知时,它会在最终恢复MainActivity之前首先返回生成通知的类的构造函数,其他一些类/片段。
有谁知道为什么会这样?
感谢。
答案 0 :(得分:0)
看来,您正在从通知中恢复时创建新的app实例 所以,在清单中添加它可能会有所帮助:
android:launchMode="singleInstance"
在其他情况下,它会恢复,因此对话将被保留。
答案 1 :(得分:0)
前台通知的默认行为是重新启动活动。尝试为PendingIntent设置您的意图标志以使用它:
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
然后,这将与您通过应用导航到活动时的行为相同。
来自docs:
如果设置,如果活动已经在历史堆栈的顶部运行,则不会启动该活动。