1

我的 Android 应用程序包含几个活动:(M主或根)A、、、、B...C下面是一个可能的活动导航图:

在此处输入图像描述

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

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

我想从 开始M,而不是从CAndroid 在长时间停顿后摧毁我的应用程序之后开始。我怎样才能做到这一点?

我想到了这样的事情:

// 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.
}

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

4

3 回答 3

2

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

要么,要么将每个值存储在SharedPreference.

于 2012-12-07T18:32:06.583 回答
2

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

如果您确实想强制他们通过该前门活动返回,您可以在检测到您已通过其他活动之一启动新流程时使用 Intent 启动它。您可能需要花一些时间阅读 Intent 标志的文档,以选择适用于此用法的标志。

于 2012-12-07T19:10:02.240 回答
0

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

于 2012-12-07T18:44:06.477 回答