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

从主活动重新启动android应用程序,android,android-activity,Android,Android Activity,我的Android应用程序包括几个活动:M main或root、A、B、C。。。 下面是一个可能的活动导航图: 初始化根活动M时,我将一些参数(如屏幕尺寸)缓存为特殊类MyUtils中的静态变量,以便稍后在其他活动中使用 当我按下活动(比如C)中的Home按钮,然后启动十几个应用程序时,就会出现Kaboom。当我返回到我的应用程序时,似乎所有的东西都被破坏了。正在调用C.onCreate方法,但缓存的参数似乎已重置 我想从M开始,而不是从C开始,因为Android在长时间的停顿后破坏了我的应用程

我的Android应用程序包括几个活动:M main或root、A、B、C。。。 下面是一个可能的活动导航图:

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

当我按下活动(比如C)中的Home按钮,然后启动十几个应用程序时,就会出现Kaboom。当我返回到我的应用程序时,似乎所有的东西都被破坏了。正在调用C.onCreate方法,但缓存的参数似乎已重置

我想从M开始,而不是从C开始,因为Android在长时间的停顿后破坏了我的应用程序。我怎样才能做到这一点

我想到了这样的事情:

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

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

老实说,我会做和你一样或类似的事情。一个可能更好的方法是使用静态MyUtils.initialize方法,可能会引入一个应用程序上下文参数,该参数在使用MyUtils的每个活动的每次创建时调用


要么这样做,要么将每个值存储在SharedReference中。

老实说,我会做与您所做的相同或类似的事情。一个可能更好的方法是使用静态MyUtils.initialize方法,可能会引入一个应用程序上下文参数,该参数在使用MyUtils的每个活动的每次创建时调用


或者,或者将每个值存储在SharedReference中。

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

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

您可能不想这样做,除非您要求用户与前门活动交互,例如,再次验证用户


如果您确实想强迫他们通过前门活动返回,那么当您检测到您已在一个新流程中启动了其他活动时,您可以使用意图来启动它。您可能需要花一些时间阅读有关意向标志的文档,以选择适用于此用途的标志。

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


如果您确实想强迫他们通过前门活动返回,那么当您检测到您已在一个新流程中启动了其他活动时,您可以使用意图来启动它。您可能需要花一些时间阅读意向标志的文档,以选择适用于此用途的标志。

大约一年前,我遇到了类似的问题,将值存储在SharedReference中解决了问题。大约一年前,我遇到了类似的问题,将值存储在SharedReference中解决了问题问题