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



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

收到通知并通过intent打开Comments.class -> MainActivity.class ->点击back(退出应用程序,进入Android设备主界面)->通过任务管理器重新打开应用程序->返回Comments.class

前几个步骤工作,但当我从任务管理器打开备份应用程序,我注意到它去Comments.class,这似乎是预期的行为,因为我已经测试了其他Android应用程序。

然而,我的Comments.class的一些属性没有被设置,我知道这是因为我的Comments.classonCreate方法没有被调用。有什么原因能阻止这种情况发生吗?这是我的尝试:

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());

这首先创建通知并通知应用程序的用户。然后Comments.javaonCreate函数被调用,这是我点击Notification时预期的。然后,我点击back,它只是导航回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);
}

返回设备主屏幕。然而,我的应用程序的一个实例仍然在后台运行,当我在后台点击我的应用程序并把它放到前台时,我被导航回Comments.java,但因为Comments.javaonCreate方法没有被调用,Activity的一些细节没有被初始化。知道为什么会这样吗?

任何帮助都会很感激。谢谢!

将您的初始化放在Comment.javaonResume函数中。这里有一篇关于Android Activity Lifecycle的好文章,可以帮助你正确理解这种行为。

@Override
public void onResume() {
    // Your initialization
}

相关内容

  • 没有找到相关文章

最新更新