我希望当用户从最近的应用程序屏幕中删除应用程序时,我的应用程序继续运行。
当前方案:
活动堆栈: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,则重定向到所需的活动...
对于状态,您可以将其保存到捆绑包或其他一些来源..就像在共享首选项中一样。