关于如何在 Android 应用程序中启动应用程序有很多问题/答案。但是这些解决方案不会产生与在 Android 启动器中点击图标相同的流程。例如,我这样做(这与通知一起使用):
intent = context.getPackageManager().getLaunchIntentForPackage("com.test.startup");
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
pendingIntent = PendingIntent.getActivity(context, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
然后,当我点击通知应用程序启动时,它的启动方式与我点击应用程序抽屉中的图标时有所不同。具体来说:使用这种方法,我的主要活动总是被创建(即 onCreate() 然后 onResume() 被调用)。但是,如果应用程序已经启动然后放在后台,那么从 Launcher 启动它只会导致当前显示的活动的 onResume() 被调用(而不是主要活动的 onCreate())。有没有办法从我的应用程序中以编程方式触发相同的恢复流程?
总结任务:当用户点击通知时,我需要启动我的应用程序(如果它还没有),或者以其当前状态(如果它在后台)被带到前台并将一些数据传递给它。然后,该应用程序将负责处理/呈现该数据。