当前位置:  开发笔记 > Android > 正文

如何重新启动Android应用程序返回到上次打开的活动?

如何解决《如何重新启动Android应用程序返回到上次打开的活动?》经验,为你挑选了2个好方法。

是否可以配置Android应用程序,以便如果用户已打开您的应用程序,启动了大量活动,然后返回主屏幕并再次重新启动您的应用程序,而不是进入主要活动,他们将转而采取最高活动在堆栈上(您应用中的最新活动)?



1> Josef Pflege..:

当通过图标在主屏幕上推出,Android将始终启动与活动android.intent.action.MAIN过滤器在你的AndroidManifest.xml,除非应用程序已经运行(在这种情况下,它显然会恢复堆栈顶部的活动).

要实现您所描述的内容,您只需将最后一个可见活动存储在其中,SharedPreferences并根据首选项启用Dispatcher活动即可启动上一个活动.

因此,在您想要自动重新启动的每个活动中:

@Override
protected void onPause() {
    super.onPause();

    SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
    Editor editor = prefs.edit();
    editor.putString("lastActivity", getClass().getName());
    editor.commit();
}

以及类似于以下内容的Dispatcher活动:

public class Dispatcher extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Class activityClass;

        try {
            SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
            activityClass = Class.forName(
                prefs.getString("lastActivity", Activity1.class.getName()));
        } catch(ClassNotFoundException ex) {
            activityClass = Activity1.class;
        }

        startActivity(new Intent(this, activityClass));
    }
}

备注

您可以为onPause覆盖创建基类

调度活动显然需要在android.intent.action.MAIN行动


我应该把Dispatcher放在哪里?在同一个活动中,我想重新开始?我该如何使用该代码?我还不太确定
@johnrock:Android构建一个堆栈,用于在您的应用运行*时查找最后一个可见活动*.不幸的是,你永远不知道什么时候你的应用程序被杀死所以如果你*总是*想要恢复最后一个活动(即使在内存压力,重启后等),那么你需要类似于我提出的建议.如果你大部分时间都没有*,那你就没有.

2> Shayan_Aryan..:

它并不复杂.你只需要操纵清单.

AndroidManifest.xm



在这里阅读'android:exported'和'android:alwaysRetainTaskState':

机器人:出口

机器人:alwaysRetainTaskState

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有