0

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

几个小时或几天后,或者直到活动被终止,我从“最近”按钮再次启动该应用程序。活动 B 成为该应用程序的新入口点,但静态变量不再持有任何值,除非我重定向回 A,否则没有机会被初始化。

launchMode的两项活动都是singleTop。不确定这是否重要,但我已经尝试过,singleTop但它们都不起作用。我想我的预期行为将是入口点始终是 A 或任何其他活动,如果没有被杀死,当然静态变量仍然持有价值。singleInstancestandard

谢谢!

4

3 回答 3

0
  • 我希望这些static变量是原始数据类型。
  • 即使应用程序在后台,Android 系统也会在一段时间后终止该进程。
  • 所以你可以做的是将这些原始变量传递IntentActivityB.
  • 现在,如果应用程序从后台被杀死并将其带到前台,则使用相同的意图来启动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
于 2016-02-26T07:19:16.407 回答
0

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

于 2016-02-26T09:57:00.177 回答
0

问题可能是因为当您的应用程序处于后台时,android 操作系统必须清理内存以释放其他应用程序的资源

于 2016-02-26T07:02:27.570 回答