Android推送通知无法重新创建活动

时间:2016-03-05 18:07:26

标签: android android-intent notifications

在我的应用程序中,当点击推送通知时,我无法使用新信息(包数据)重新创建活动。以下是我的推送通知流程的步骤。

第1步: 我点击推送通知时打开活动B,其中包含活动B中显示的信息。

第2步: 点击主页按钮或转到其他一些活动,以便活动B进入后台(OnPause)状态。

第3步: 现在,我再次通过点击推送通知打开活动B,其中包含Activity B goes to onResume instead of onCreate state的新信息。

我的要求是它应该转到onCreate状态,以便我可以使用新信息处理。 IActivity B如何进入onResume而不是onCreate状态呢?我在通知接收器类中做了以下内容。

Intent intent = new Intent(this, ListScreenActivity.class);
Bundle bundle = new Bundle();
bundle.putInt("res_id", requestCode);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("uid", id_value);
intent.putExtras(bundle);
PendingIntent resultPendingIntent = PendingIntent.getActivity(this, requestCode, intent,0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext());
Notification notification = mBuilder
         .setSmallIcon(R.mipmap.ic_launcher)
         .setTicker(tickerMessage)
         .setWhen(0)
         .setAutoCancel(true)
         .setContentTitle(app_name)
         .setStyle(new NotificationCompat.BigTextStyle().bigText(tickerMessage)
         .setContentIntent(resultPendingIntent)
         .setContentText(tickerContent).build();

NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify((int) System.currentTimeMillis(), notification);

注意: 这里ListScreenActivity (Activity B) is not Launcher activity

2 个答案:

答案 0 :(得分:0)

您无法更改Android活动生命周期。你应该期望每次都能发生同样的事情。 onCreate仅在每个活动对象的实例中调用一次。这无法改变。您可以阅读activity lifecycle以获取更多信息。

答案 1 :(得分:0)

如果要关闭现有的活动堆栈而不管其中的内容是什么并创建新的root,正确的标志集如下:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);