6

我在使用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_modesingleTasksingleTopsingleInstance

TaskStack当父级已经在前台并且不丢失数据时,如何使用活动和父级创建上述自定义?(理想情况下,重用堆栈中的活动?)

4

0 回答 0