从通知抽屉执行操作会生成已在运行的活动的另一个实例

时间:2014-06-09 15:47:20

标签: android android-intent android-activity android-notifications android-pendingintent

我的Android应用程序生成通知。此通知以下列方式定义:

NotificationCompat.Builder mBuilder =
   new NotificationCompat.Builder(this)
     .setSmallIcon(R.drawable.ic_action_alarms)
     .setContentTitle("title")
     .setContentText("example text");

Intent resultIntent = new Intent(this, MyActivity.class);

PendingIntent resultPendingIntent = PendingIntent.getActivity(this,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT);

mBuilder.setContentIntent(resultPendingIntent);

因此,当我打开通知抽屉并单击通知区域时,活动MyActivity将启动。但是,如果MyActivty的另一个实例已在运行,我会获得两个MyActivty实例同时运行,而我希望它总是只有一个实例,在我的应用程序中运行。

我尝试过使用

android:launchMode="singleTop"
android:clearTaskOnLaunch="true"

但结果是一样的。

我该如何完成这项任务?

1 个答案:

答案 0 :(得分:1)

最终,您可能需要考虑使用Fragments,而不是活动来实现您想要的UI交互(实际上NavDrawer的工作方式 - 以及官方示例实现它的方式)。

您可以使用不同的意图标记将旧的Activity带回到前面,但这实际上并不是您最终需要的行为(与Fragment相关)。

Ex Intent Flags

Intent intent = new Intent(this, ActivityExamlpe.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);