2013-09-21 32 views
2

我的通知应该启动一项活动,或者仅在活动已打开(屏幕)时显示该活动。通知的作用是销毁活动并重新创建,即使活动已经在屏幕上。摧毁并创建现有活动的通知

我已经搜索了解决方案,他们说要将android:launchMode="singleTop"添加到清单中的活动中,但这没有效果,只要用户单击通知,活动仍会被销毁并重新创建。

这就是通知是如何告知开始点击活动:

Intent resultIntent = new Intent(this, MyActivity.class); 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
stackBuilder.addParentStack(MyActivity.class); 
stackBuilder.addNextIntent(resultIntent); 
PendingIntent resultPendingIntent = 
    stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); 
mBuilder.setContentIntent(resultPendingIntent); 
// mBuilder is NotificationCompat.Builder() 

回答

-1

这是不可能的。明确的文档“如果活动的实例已经存在于目标任务的顶部,则系统通过调用onNewIntent()方法将意图路由到该实例,而不是创建活动的新实例。”我一遍又一遍地使用它。仔细检查你是否已设定MyActivitylaunchModesingleTop

+0

替换行

PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); 

我有。仔细检查我的意思。我不知道它是否与TaskStackBuilder混淆(它是在Android开发站点上的一种方式,使后退按钮导致通知打开的应用程序的父活动) – PFort

+0

我确认此行为存在,FFS,一如既往的Android中发生了什么。以前singleTop在Android上工作得很好 –

3

PendingIntent resultPendingIntent = 
stackBuilder.getPendingIntent(0,Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
+0

这是疯了!它完成了这项工作。 –