我的Android应用包含多项活动:M
(主要或根),A
,B
,C
...
以下是可能的活动导航图:
当我的根活动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.
}
......但我不确定这是最好的方式。你会建议什么?
答案 0 :(得分:2)
老实说,我会做同样的事情或类似于你正在做的事情。一个可能更好的想法是使用静态MyUtils.initialize()
方法,可能接受一个应用程序上下文参数,该参数在每个使用MyUtils的Activity的onCreate()
处调用。
要么是这样,要么将每个值存储在SharedPreference
。
答案 1 :(得分:2)
您可能不希望以这种方式执行操作,除非您要求用户与前门活动进行交互(例如,再次对用户进行身份验证)。
如果您确实希望强制他们通过前门活动重新进入,则当您检测到您已在其他活动之一的新流程中启动时,可以使用Intent启动它。您可能希望花一些时间阅读Intent标志的文档,以选择适用于此用途的标记。
答案 2 :(得分:0)
这不是一个非常聪明的意思,但你可以将这些信息存储在其他地方,如数据库或只是一个文件,然后在需要时检索它。