【问题标题】:Android App close and reopen start at beginning againAndroid App关闭并重新打开重新开始
【发布时间】:2012-03-14 23:23:39
【问题描述】:

我为 android 创建了一个简单的应用程序,它使用按钮来导航应用程序从第 1 页开始的不同活动,您单击第 2 页或第 3 页按钮等,然后启动所需的活动,很简单。

当您单击 HOME 或退出应用程序时,我遇到的问题(更多的是烦恼而不是问题),因为 android 不会立即终止应用程序,它会记住您所在的页面并打开应用程序例如在活动 2 或 3。我希望应用程序在关闭时再次回到应用程序的开头并在 1 处打开,我可以通过单击返回回到 1 但这真的不是我想要的。

我希望有人可以阅读并理解,请尽可能简单的解决方案

【问题讨论】:

    标签: android eclipse android-activity


    【解决方案1】:

    您需要做的是充分利用 Activity 生命周期。当屏幕因任何原因被隐藏时,它的onPause 方法会被调用。当它再次显示时,onResume 被调用。然而,onResume 甚至在第一次显示新 Activity 时也会被调用。另一个问题是在Activity之间转换时会调用onPause

    因此,当最后一个 Activity 的 onPauseonResume 连续调用时,您最终希望“重新启动”应用程序。试试这个类,并让你的所有 Activity 扩展它而不是 Activity。

    public abstract class BaseActivity extends Activity {
    
        private static BaseActivity lastPausedActivity = null;
    
        @Override
        protected void onPause() {
    
            super.onPause();
            lastPausedActivity = this;
        }
    
        @Override
        protected void onResume() {
    
            super.onResume();
            if(this == lastPausedActivity) {
                lastPausedActivity = null;
                Intent intent = new Intent(this, FirstActivity.class);
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
                startActivity( intent );
            }
        }
    }
    

    我还没有测试过这段代码,所以它可能需要一些调整,但逻辑应该是合理的。

    【讨论】:

    • 我创建了这个类,然后在其他类的代码中使用它,应用程序最初启动,但是一旦我尝试转到其他页面,它就会弹回第一页再次然后似乎进入第一页第二页第一页等循环,直到应用程序崩溃
    • getTaskId() 可能是个糟糕的选择。我认为它在活动之间可能是独一无二的,但它可能不是。尝试保持 Activity 而不是 taskId (请注意,这通常是一个坏主意,但只是为了确保我的逻辑正常)。我会更新我的代码。
    • 哦,我明白了我错过了什么。进入if检查后,lastPausedActivity需要重置。
    • 这很完美,只是更改了程序中的代码,它会产生奇迹,每次我“关闭”应用程序(使用主页或其他选项)时,当我重新打开它时它会回到主页。感谢您的帮助和明确的指示
    • 很高兴帮助蒂姆。不过我很好奇,您是坚持使用getTaskId() 解决方案还是使用我现在上面的代码?如果你不是,我会用getTaskId() 再试一次,因为持有对Activity 的静态引用几乎总是一个坏主意。
    猜你喜欢
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多