我在使用TaskStack
通知时遇到问题。我在点击通知时试图保持应用的导航流程。
我的应用的导航风格如下:
PrincipalActivity
(父母)→SecondaryActivity
(孩子)
有时,GCM服务可以推送以SecondaryActivity
开头的通知。 PrincipalActivity
的实例可能存在或不存在,因此我从TaskStack
实现了自定义PendingIntent(见下文)。这在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
{1}},singleInstance
),但没有运气。
当父级已经在前台并且不丢失数据时,如何使用activity和parent创建上述自定义TaskStack
? (理想情况下,重用堆栈中的活动?)