Armit 和 Sniffer 都是正确的(我没有时间检查 lucefer 关于序列化整个数组并一次存储它的链接)。根据您的情况,您有多种选择。
作为在 Android 中存储值时的一般“经验法则”:
当您希望在用户打开应用时临时存储数据(即使应用已移至后台),但又希望将数据重置为原始值(0、false 或 null,如果未定义)关闭应用程序的时间:
-利用 SavedInstanceState,它甚至可以保护数据免受屏幕旋转变化的影响。
或
-创建一个新的 Java 类并将您的数据存储在那里。只要应用程序打开(即使应用程序移动到后台),存储在 Java 类文件中的数据将保持其值,因为存储在 Activity 中的数据将在方向更改甚至移动到另一个时重置其值如果数据没有被显式存储或传递,则活动...(以下是 SINGELTON JAVA 类的示例)
public class RegularJavaClass {
public static RegularJavaClass myObj;
public RegularJavaClass(){}
public static RegularJavaClass getInstance() {
if (myObj == null) {
myObj = new RegularJavaClass();
}
return myObj;
}
private int myNumValue;
private String myStringValue;
public int getMyNumValue() {
return myNumValue;
}
public void setMyNumValue(int myNumValue) {
this.myNumValue = myNumValue;
}
public String getMyStringValue() {
return myStringValue;
}
public void setMyStringValue(String myStringValue) {
this.myStringValue = myStringValue;
}
}
那么当你调用这个类来存储使用的东西时
int someNum = 3000;
String someString = "saveThisString";
RegularJavaClass.getInstance().setMyNumValue(someNum);
RegularJavaClass.getInstance().setMyStringValue(someString);
那么当您想要检索此数据时
int retrieveNum = RegularJavaClass.getInstance().getMyNumValue();
String retrieveString = RegularJavaClass.getInstance().getMyStringValue();
当您想要存储少量数据并在应用程序关闭并稍后再次打开时(或直到应用程序已卸载或开发人员明确更改)仍保留它时
-使用共享首选项。可以把它想象成一个微型数据库,每个 android 应用程序都会自动附带它。记住这里只存储少量数据
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
SharedPreferences prefs =
getSharedPreferences("StorageName", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
//The value type determines the "put" in your case break the
//array into a for statement and save each value
for (String s : myArray) {
//s would be the value
//make a key for your stored value just like a HashMap
editor.putString(key, value).apply();
}
}
});
t.start();
}
}
然后在以后检索您存储的值
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences prefs =
getSharedPreferences("StorageName", MODE_PRIVATE);
//Always enter a default value for just in case the storage
//value is empty
String myStoredValue = prefs.getString(key,null);
}
}
当您想要存储大量数据并在应用程序关闭并稍后再次打开时(或直到应用程序被开发人员卸载或明确更改)仍保留这些数据时
p>
-使用SQLite等数据库