我最近为我的应用程序实现了通知。我一直在测试的是应用程序应该如何工作的行为。我想这会是这样的:
收到通知并通过意图打开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
的某些细节未初始化。知道为什么会这样吗?
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
将初始化设置放在onResume
的{{1}}函数中。这里有一篇关于Android Activity Lifecycle的好文章,可以帮助您正确理解行为。
Comment.java