Android:重复活动在广播接收器上创建

时间:2014-11-26 08:22:58

标签: android android-broadcast

我在GCMIntent服务类中指定了一个活动,只要用户从服务器接收广播,就需要打开该活动。下面是我的GCMIntent类中的代码:

private void sendNotification(String msg) {
String payload=msg.substring(msg.indexOf("RequestResponse=")+20, msg.indexOf("from")-2);
mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, ListActivity.class), 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.ic_launcher).setContentTitle("xxx").setStyle(new NotificationCompat.BigTextStyle().bigText("Update List")).setContentText("Update List").setAutoCancel(true).setDefaults(Notification.DEFAULT_ALL).setWhen(System.currentTimeMillis());

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}

所以在广播消息上单击我的ListActivity应该打开,它将根据从服务器接收的数据刷新List。问题是如果我的ListActivity在前台打开,那么在广播点击时再次创建ListActivity,然后我实际上有2个相同活动的实例。如果其他Activity在前台,它的工作正常。 我做了一些研究,似乎我们不应该使用代码来确定生产中的前台活动。一些帖子建议使用Activity Manager来了解当前的前台活动仅用于调试目的。 我知道这个

1 个答案:

答案 0 :(得分:1)

将其添加到清单文件中的ListActivity。

android:launchMode="singleInstance"

编辑:由于在从背景返回活动时始终会调用onResume(),因此您可以使用onResume()中直接收到的数据更新列表。