什么使变量的值在生命周期中变空或返回初始化值

Whats make value of variable become empty or back to initialization value in lifecycle

我很好奇是什么让某个变量内部的值在 android 生命周期中再次变空或回到其初始值。

首先让我们看看我是如何创建变量的:

public class myData {
 public static String myCode = "";

 public static String getData(String Choice) {
  String theData = "";
  if ("Code".equals(Choice) {
   theData = myCode;
  }

  return myCode;
 }

 public static void setData(String setData,String Choice) {

  if ("Code".equals(Choice) {
   myData.myCode = setData;
  } 
 }
}

如果我想填充变量,我通常这样做:

myData.setData("value of variable","Code");

如果我想获取变量的值,我通常这样做:

myData.getData("Code");

我只想知道是什么让我的变量进入了 android 生命周期,当然不包括应用程序关闭时。

我必须尝试记录并显示 onstartoncreateonresumeonrestart 中的值。而且它们都在我的变量中完整地保留了值,没有任何问题。

我的客户总是告诉我,当他们打开一些 activity 时,我的应用程序有时会崩溃。我还问他们在使用我的应用程序时是否做了什么,

他们中的一些人回答说应用程序在收到 phone 调用后崩溃,当 phone 调用结束时,应用程序启动时崩溃。

也有人说当他们打开应用程序然后闲置phone而不关闭应用程序直到phone变成黑屏,当他们再次打开它时应用程序崩溃了.

我查看日志后,问题是变量变空了。这就是为什么我想知道是否还有另一种可能性使变量内部的值变为空?

正如 John Lord 所说,在低端设备上,如果内存不足,变量可能会再次回到其初始值。

所以为了将来参考,我使用共享偏好来应对它,这是我获取数据的结构:

public class myActivity extends AppCompatActivity {

  String myCode = "";

  protected void onCreate(Bundle savedInstanceState) {
   ....
     SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("myData", Context.MODE_PRIVATE);
     myCode = sharedPreferences.getString("Code",null);
   ....
  }

  @Override
  protected void onResume() {
        super.onResume();
        SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("myData", Context.MODE_PRIVATE);
        myCode = sharedPreferences.getString("Code",null);
  }


}

这是我设置数据的方式:

SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("myData",Context.MODE_PRIVATE);

sharedPreferences.edit().putString("Code","Hello World").apply();

希望对同样想搜索的朋友有所帮助