通过单例模式访问一个int变量。
但问题是变量设置一次,并在一段时间后重置为0.
它似乎被垃圾收集重置。保存Activity.onSaveInstanceState中的值并在onCreate()中恢复它是不起作用。
解决方案是将变量保存在磁盘中吗?
我只是想阻止它重置。
答案 0 :(得分:0)
答案 1 :(得分:0)
只要应用程序处于活动状态,变量就会保持活动状态。 Android因自动杀死后台进程而臭名昭着。不幸的是,如果您尝试访问一个您希望在应用程序的多次运行中保留的变量,那么 需要以某种方式将其写入磁盘。
但是,您可以选择几种方案。我将列出Google recommends。
Shared Preferences,“将私有原始数据存储在键值对中。”
Internal Storage,“将私人数据存储在设备内存中。”
External Storage,“将公共数据存储在共享外部存储设备上。”
SQLite Database,“将结构化数据存储在私人数据库中。”
Network Connection,“使用您自己的网络服务器在网络上存储数据。”
在所有这些解决方案中,Shared Preferences可能是最容易实现的。它很简单:
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}
代码来自Android Data Storage页。