android重启应用程序从主要活动

时间:2012-12-07 18:15:17

标签: android android-activity

我的Android应用包含多项活动:M(主要或根),ABC ... 以下是可能的活动导航图:

enter image description here

当我的根活动M被初始化时,我将一些参数(如屏幕尺寸)缓存为特殊类MyUtils中的静态变量,以便稍后在其他活动中使用它们。

当我在活动中按下主页按钮C然后启动十几个应用程序时,Kaboom就会发生。当我返回到我的应用程序时,似乎一切都已被破坏。正在调用C.onCreate方法,但缓存的参数似乎已重置。

我希望从Android M开始,而不是从Android C开始,经过长时间停顿后我的应用程序遭到破坏。我怎样才能做到这一点?

我想到了这样的事情:

// to be put into all my activities but M:
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (MyUtils.GetScreenWidth() == -1)
    {
        // seems like Android killed my app
        finish();
        return;
    }
    // Normal initialization.
    // Use MyUtils.GetScreenWidth() to align my ui elements.
}

......但我不确定这是最好的方式。你会建议什么?

3 个答案:

答案 0 :(得分:2)

老实说,我会做同样的事情或类似于你正在做的事情。一个可能更好的想法是使用静态MyUtils.initialize()方法,可能接受一个应用程序上下文参数,该参数在每个使用MyUtils的Activity的onCreate()处调用。

要么是这样,要么将每个值存储在SharedPreference

答案 1 :(得分:2)

您可能不希望以这种方式执行操作,除非您要求用户与前门活动进行交互(例如,再次对用户进行身份验证)。

如果您确实希望强制他们通过前门活动重新进入,则当您检测到您已在其他活动之一的新流程中启动时,可以使用Intent启动它。您可能希望花一些时间阅读Intent标志的文档,以选择适用于此用途的标记。

答案 2 :(得分:0)

这不是一个非常聪明的意思,但你可以将这些信息存储在其他地方,如数据库或只是一个文件,然后在需要时检索它。