android - static var被杀死但活动被带到前台

时间:2016-02-26 06:48:39

标签: android android-activity activity-state

让我说我有2个活动A和B.我从A到B然后点击Home按钮。在A中初始化了一些静态变量。

几小时或几天后或直到活动被杀死,我再次从“最近”按钮启动应用程序。活动B成为此应用程序的新入口点,但静态变量不再保留任何值,并且除非我重定向回A,否则无法初始化。

我的launchMode这两项活动均为singleTop。不确定这是否重要,但我已尝试singleTopsingleInstancestandard这些都没有效果。我想我的预期行为将是入口点总是A或任何其他活动,如果没有被杀死,当然静态变量仍然保持价值。

谢谢!

3 个答案:

答案 0 :(得分:0)

问题可能是因为当你的应用程序在后台运行时,android o.s必须清理内存以释放其他应用程序的资源

答案 1 :(得分:0)

  • 我希望那些static变量具有原始数据类型。
  • 即使应用程序处于后台,Android系统也会在一段时间后终止该过程。
  • 您可以做的是将这些原始变量通过Intent传递给ActivityB
  • 现在,如果应用程序从后台被杀死并将其带到Foreground,则会使用相同的意图启动ActivityB,您仍然可以获取传递的变量。

将变量传递给ActivityB而不是静态变量。

Intent intent = new Intent();
intent.putExtras("Id", 1);
intent.putExtras("Name", "kevz");
startActivity(intent, ActivityB.class);

现在在ActivityB中获取传递的变量值 -

int Id = getIntent().getIntExtra("Id", -1); // -1 is default value.
String Name = getIntent().getStringExtra("Name", "unknown"); // unknown is default value

答案 2 :(得分:0)

如果静态变量不起作用,您可以尝试使用getter()setter()方法来处理变量。