我在使用TaskStack
通知时遇到问题。当点击通知时,我试图保持我的应用程序的导航流程。
我的应用的导航风格是这样的:
PrincipalActivity
(父母)→ SecondaryActivity
(孩子)
有时 GCM 服务可以推送启动的通知SecondaryActivity
。可能存在或不存在的实例,PrincipalActivity
因此我从 a 实现了一个自定义 PendingIntent TaskStack
(见下文)。这在PrincipalActivity
暂停或关闭时有效。
当用户PrincipalActivity
在前台单击通知时,问题就出现了:PendingIntent
调用PrincipalActivity.onDestroy()
并创建一个新的活动堆栈,丢失所有数据。
服务推送通知:
Intent notificationIntent = new Intent(context, SecondaryActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(SecondaryActivity.class);
stackBuilder.addNextIntent(notificationIntent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,
PendingIntent.FLAG_UPDATE_CURRENT);
mNotifyBuilder.setContentIntent(pendingIntent);
mNotificationManager.notify(id, mNotifyBuilder.build());
AndroidManifest.xml
<activity
android:name="com.hitsbam.geotalk.Principal"
android:configChanges="orientation|screenSize|keyboardHidden"
android:label="@string/principal_titulo"
android:launchMode="singleTask" />
<activity
android:name="com.hitsbam.geotalk.Secondary"
android:configChanges="orientation|screenSize|keyboardHidden"
android:label="@string/peticiones_titulo"
android:parentActivityName=".Principal" />
我尝试了 ( , ) 的标志,PendingIntent
并对FLAG_UPDATE_CURRENT
清单( , , ) 中的活动进行FLAG_ONE_SHOT
了不同的实验,但没有运气。launch_mode
singleTask
singleTop
singleInstance
TaskStack
当父级已经在前台并且不丢失数据时,如何使用活动和父级创建上述自定义?(理想情况下,重用堆栈中的活动?)