2016-02-26 59 views
0

比方说,我有2个活动A和B.我从A去B,然后点击主页按钮。在几小时或几天之后或者直到活动被杀死时,有几个静态变量正在初始化为A.android - 静态var被杀,但活动被带到前台

,我从Recent按钮再次启动应用程序。活动B成为这个应用程序的新入口点,但静态变量不再具有任何价值,并且没有机会获得初始化,除非我重定向回到A.

我的launchMode这两个活动都是singleTop。不知道是否重要,但我试过singleTop,singleInstancestandard没有人工作。我想我的预期行为将是进入点始终是A或任何其他活动,如果没有被杀死,当然静态变量仍然持有价值。

谢谢!

回答

0

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

+0

你确定,Android系统在需要内存时被清除了静态值吗?如果清除静态概念有什么用? – Boopathi

+0

我知道活动可能会被杀死。即时寻找解决方案。你知道是否有一种方法总是从活动A开始,如果应用程序被杀害? – user1865027

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 
+0

不,这些静态变量不是全部的原始类型。如果我必须通过意图活动B传递变量,那么使用静态的最重要的是什么?如果我有更多的活动,那么我必须一路通过它们?我认为如果申请被杀,我宁愿开始活动A.任何想法如何可以做到? – user1865027

0

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

相关问题