我有一个将 launchMode 设置为 singleTask 的活动:
<activity
android:name="com.blah.blah.MyActivity"
android:launchMode="singleTask">
</activity>
我有一个带有启动该活动的 PendingIntent 的持续通知:
Intent activityIntent = new Intent( this,
MyActivity.class );
TaskStackBuilder stackBuilder = TaskStackBuilder.create( this );
stackBuilder.addParentStack( MyActivity.class );
stackBuilder.addNextIntent( activityIntent );
PendingIntent resultingActivityPendingIntent = stackBuilder.getPendingIntent( REQUEST_CODE,
PendingIntent.FLAG_UPDATE_CURRENT );
...
m_notificationBuilder.setContentIntent( resultingActivityPendingIntent );
startForeground( ONGOING_NOTIFICATION_ID,
m_notificationBuilder.build() );
当我与现有的 MyActivity 交互时,我点击 Home 并通过启动器重新启动 MyActivity,MyActivityonNewIntent()
会按预期调用。
问题是当我与现有的 MyActivity 交互时,我点击正在进行的通知,一个新的 MyActivity 是通过 创建onCreate()
的,而现有的 MyActivity 是通过销毁的onDestroy()
。我希望 MyActivityonNewIntent()
会被调用。为什么这不会发生?
我尝试了这些答案但没有成功:
- 意图 - 如果活动正在运行,请将其放在前面,否则启动一个新活动(来自通知)
- 如何使通知恢复而不是重新创建活动?
- FLAG_ACTIVITY_REORDER_TO_FRONT 被忽略(在这种情况下,点击通知时现有实例不会被销毁)