在我的应用程序中,当点击推送通知时,我无法使用新信息(包数据)重新创建活动。以下是我的推送通知流程的步骤。
第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
答案 0 :(得分:0)
您无法更改Android活动生命周期。你应该期望每次都能发生同样的事情。 onCreate仅在每个活动对象的实例中调用一次。这无法改变。您可以阅读activity lifecycle以获取更多信息。
答案 1 :(得分:0)
如果要关闭现有的活动堆栈而不管其中的内容是什么并创建新的root,正确的标志集如下:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);