android-静态变量被杀死,但活动被带到前台
假设我有两个活动A和B。我从A转到B,然后按Home按钮。a中有几个静态变量正在初始化 几小时或几天之后,或者直到活动停止,我从“最近”按钮再次启动应用程序。活动B成为此应用程序的新入口点,但静态变量不再包含任何值,并且没有机会初始化,除非我重定向回A 这两种活动的myandroid-静态变量被杀死,但活动被带到前台,android,android-activity,activity-state,Android,Android Activity,Activity State,假设我有两个活动A和B。我从A转到B,然后按Home按钮。a中有几个静态变量正在初始化 几小时或几天之后,或者直到活动停止,我从“最近”按钮再次启动应用程序。活动B成为此应用程序的新入口点,但静态变量不再包含任何值,并且没有机会初始化,除非我重定向回A 这两种活动的my启动模式均为单顶模式。不确定这是否重要,但我已经尝试了singleTop,singleInstance和standard它们都不起作用。我想我的预期行为应该是入口点始终是A或任何其他活动,如果没有被杀死,当然静态变量仍然有价值 谢
启动模式均为单顶模式
。不确定这是否重要,但我已经尝试了singleTop
,singleInstance
和standard
它们都不起作用。我想我的预期行为应该是入口点始终是A或任何其他活动,如果没有被杀死,当然静态变量仍然有价值
谢谢 问题可能是因为当您的应用程序在后台时,android o.s必须清理内存以释放其他应用程序的资源
- 我希望那些
静态
变量是原始数据类型
- 即使应用程序在后台,Android系统也会在一段时间后终止进程
- 因此,您可以通过
Intent
将这些基本变量传递给ActivityB
- 现在,如果应用程序从后台被终止,并将其带到前台,则使用相同的意图启动
活动b
,您仍然可以获得传递的变量
将变量传递给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
如果静态变量不起作用,您可以尝试使用变量的getter()
和setter()
方法。您确定,Android系统在需要内存时会清除静态值吗?如果清除,静态概念有什么用?我知道活动可能会被终止。我在寻找解决办法。你知道如果应用程序被终止,是否有办法总是从活动a开始吗?不,那些静态变量不都是基元类型。如果我必须通过intent将vars传递给活动B,那么使用static有什么意义呢?如果我有更多的活动,我就必须一路通过?如果应用程序被终止,我想我更愿意启动活动A。你知道怎么做吗?