我希望我的应用程序在用户从最近的应用程序屏幕中删除应用程序时继续运行。
当前情景:
活动堆栈:A - > B - > C(前台服务从此活动开始)。现在,如果用户从最近的应用程序屏幕中删除该应用程序,则该服务将继续运行,但活动A,B和C 已杀死。现在,如果用户启动应用程序,则启动活动A.
需要的结果:
我希望应用程序直接使用活动C 启动它之前被杀死的状态。
我很感激有关此主题的任何建议和想法。谢谢。
答案 0 :(得分:1)
以下是您可以尝试的附近解决方案..可能会有所帮助。
您可以使用应用程序类的方法,在该方法中可以跟踪当前的运行活动。
要打开上一个活动,请在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,那么重定向到所需的活动......
对于州,您可以将其保存到捆绑或其他来源..就像在sharedpreferance中一样。