当用户从最近的应用程序屏幕中删除应用程序时,我希望我的应用程序继续运行。
当前场景:
活动堆栈:A --> B --> C(前台服务从此活动开始)。现在,如果用户从最近的应用程序屏幕中删除应用程序,则服务会继续运行,但活动 A、B 和 C 将被终止。现在,如果用户启动应用程序,则启动活动 A。
所需结果:
我希望应用程序直接从活动 C开始,其状态为之前被杀死之前的状态。
我将不胜感激有关此主题的任何建议和想法。谢谢你。
当用户从最近的应用程序屏幕中删除应用程序时,我希望我的应用程序继续运行。
当前场景:
活动堆栈:A --> B --> C(前台服务从此活动开始)。现在,如果用户从最近的应用程序屏幕中删除应用程序,则服务会继续运行,但活动 A、B 和 C 将被终止。现在,如果用户启动应用程序,则启动活动 A。
所需结果:
我希望应用程序直接从活动 C开始,其状态为之前被杀死之前的状态。
我将不胜感激有关此主题的任何建议和想法。谢谢你。
这是您可以尝试的附近解决方案..可能会有所帮助。您可以使用应用程序类的方法,您可以在其中跟踪当前正在运行的活动。为了打开最后一个活动,在下面的方法中维护和保存SharedPreferences
活动暂停/或创建(无论工作)的变量。
private void setupActivityListener() {
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
if (activity instanceof MainActivity) {
Log.e(TAG, "**************** MainActivity Created *******************");
}
//Log.e(TAG, "**************** onActivityCreated *******************");
}
@Override
public void onActivityStarted(Activity activity) {
//Log.e(TAG, "**************** onActivityStarted *******************");
}
@Override
public void onActivityResumed(Activity activity) {
CancelNotification();
activeActivity = activity;
//Log.e(TAG, "**************** onActivityResumed *******************");
}
@Override
public void onActivityPaused(Activity activity) {
activeActivity = null;
//Log.e(TAG, "**************** onActivityPaused *******************");
}
@Override
public void onActivityStopped(Activity activity) {
//Log.e(TAG, "**************** onActivityStopped *******************");
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
if (activity instanceof MainActivity) {
Log.e(TAG, "**************** MainActivity Destroyed *******************");
}
}
});
}
当打开应用程序时,在启动时检查最后一个活动是什么......如果它不是 MainActivity 然后重定向到所需的活动......
对于状态,您可以将其保存到捆绑包或其他一些来源.. 就像在 sharedpreferenceance 中一样。