Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android-静态变量被杀死,但活动被带到前台_Android_Android Activity_Activity State - Fatal编程技术网

android-静态变量被杀死,但活动被带到前台

android-静态变量被杀死,但活动被带到前台,android,android-activity,activity-state,Android,Android Activity,Activity State,假设我有两个活动A和B。我从A转到B,然后按Home按钮。a中有几个静态变量正在初始化 几小时或几天之后,或者直到活动停止,我从“最近”按钮再次启动应用程序。活动B成为此应用程序的新入口点,但静态变量不再包含任何值,并且没有机会初始化,除非我重定向回A 这两种活动的my启动模式均为单顶模式。不确定这是否重要,但我已经尝试了singleTop,singleInstance和standard它们都不起作用。我想我的预期行为应该是入口点始终是A或任何其他活动,如果没有被杀死,当然静态变量仍然有价值 谢

假设我有两个活动A和B。我从A转到B,然后按Home按钮。a中有几个静态变量正在初始化

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

这两种活动的my
启动模式均为
单顶模式
。不确定这是否重要,但我已经尝试了
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。你知道怎么做吗?