是什么使得变量的值在生命周期中变为空或返回到初始值



我只是想知道是什么让某个变量中的值再次变空,或者在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中显示值。所有这些都仍然保持变量内部的值不变,没有任何问题。

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

他们中的一些人回答说,应用程序在接到电话后崩溃,当电话结束时,应用程序就会崩溃启动。

他们中的一些人还说,当他们打开应用程序,然后闲置手机,而不关闭应用程序,直到手机变成黑屏,当他们再次打开应用程序时,应用程序就会崩溃。

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

正如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();

我希望这将有助于那些谁想搜索相同的东西

最新更新