如何通过应用程序通知导航来重新创建活动?

时间:2016-09-06 03:14:15

标签: java android android-intent notifications onbackpressed

我最近为我的应用程序实现了通知。我一直在测试的是应用程序应该如何工作的行为。我想这会是这样的:

收到通知并通过意图打开Comments.class - > MainActivity.class - >点击返回(退出应用程序,转到Android设备的主屏幕) - >通过任务管理器重新打开应用程序 - >返回Comments.class

前几个步骤可以工作但是当我从任务管理器开始备份应用程序时,我注意到Comments.class这似乎与我在其他Android应用程序中测试的预期行为一样。

但是,我的Comments.class的某些属性未设置,我知道这是因为onCreate的{​​{1}}方法未被调用。有什么理由不这样做吗?这是我的尝试:

Comments.class

NotificationService.java

首先创建通知并通知用户该应用程序。然后调用Intent resultIntent = new Intent(context, Comments.class); Intent backIntent = new Intent(context, MainActivity.class); backIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //Set a random notification Id for each notification so that if you get multiple, the first does not get replaced. Random random = new Random(); int notificationId = random.nextInt(9999 - 1000) + 1000; PendingIntent pendingIntent = PendingIntent.getActivities(context, notificationId, new Intent[] { backIntent, resultIntent}, PendingIntent.FLAG_ONE_SHOT); //When the notification is actually clicked on notificationBuilder.setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE); notificationManager.notify(notificationId, notificationBuilder.build()); 的{​​{1}}函数,这是我点击Comments.java时所期望的。然后,我单击后退,只需导航回onCreate,如下所示:

Notification

MainActivity

然后,Comment.java被调用并创建,这很好。如果我再次单击@Override public void onBackPressed() { super.onBackPressed(); this.finish(); } ,则执行以下代码:

此处来自MainActivity.java

MainActivity.java

将我带回设备的主屏幕。但是,我的应用程序的一个实例仍然在后台运行,当我在后台单击我的应用程序并将其放到前台时,我被导航回MainActivity.java但是因为@Override public void onBackPressed() { super.onBackPressed(); Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startMain); } 的{ {1}}方法未被调用,Comments.java的某些细节未初始化。知道为什么会这样吗?

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

将初始化设置放在onResume的{​​{1}}函数中。这里有一篇关于Android Activity Lifecycle的好文章,可以帮助您正确理解行为。

Comment.java