在android中保存很less的信息(如第一次运行应用程序)

我想保存一个标志,以便识别我的应用程序是否第一次运行。 对于这个简单的工作,我不想创build数据库..

有一个简单的select来做到这一点? 我只想保存和阅读一小块信息。

Solutions Collecting From Web of "在android中保存很less的信息(如第一次运行应用程序)"

使用SharedPreferences

 SharedPreferences preferences = getSharedPreferences("prefName", MODE_PRIVATE); SharedPreferences.Editor edit= preferences.edit(); edit.putBoolean("isFirstRun", false); edit.commit(); 

使用sharedPreferencefiles来保存数据,但更好的select是sharedPreference

用于检索

 SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); 

为了节省

 SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", true); editor.commit(); 

一个正确的方法是通过使用Android类SharedPreferences用于这样的事情。

存储设置

 SharedPreferences settings = getSharedPreferences(NAME_OF_PREFERENCES, MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("appPreviouslyStarted", true); editor.apply(); 

不要忘记申请或您的突变设置将不会被保存!

您可以使用不同的NAME_OF_PREFERENCES创build多个设置。 设置存储在设备上,因此在closures应用程序后可用。

当您尝试检索尚未创build的NAME_OF_PREFERENCES ,将创build一个新的。 在这里看到更多的行为。

apply()与commit()

您可以使用editor.apply()以及editor.commit() ,唯一的区别是apply()不会返回boolean值,如果编辑成功或不成功。 editor.apply()为此更快,更常用。

什么是MODE_PRIVATE

你可以在这里看到所有关于不同的模式。 对于你的情况MODE_PRIVATE是好的。

检索设置

 SharedPreferences settings = getSharedPreferences(NAME_OF_PREFERENCES, MODE_PRIVATE); boolean silent = settings.getBoolean("silentMode", false); 

SharedPreferences对象中检索设置时,您必须指定一个默认值,当找不到该设置时将返回该默认值。 在这种情况下,这是false

我build议你去使用SharedPreference持久性存储。 对于less量的信息,它非常容易和快速的存储/回放。

请参阅代码以从SharedPreference获取值

  // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); setSilent(silent); 

并将其存储在SharedPreference中

  // 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); 

例如你可以做一个类:(比如一个对象)

 import android.content.Context; import android.content.SharedPreferences; public class SettingsMain { Context context; SharedPreferences preferences; SharedPreferences.Editor editor; private static final String PREFER_NAME = "settingsMain"; public static final String KEY_VIBRATE = "switchVibrate"; public SettingsMain(Context context) { this.context = context; setPreferences(); } private void setPreferences(){ preferences = context.getSharedPreferences(PREFER_NAME, context.MODE_PRIVATE); editor = preferences.edit(); } public void cleanPreferences(){ editor.clear(); editor.commit(); } public void setStatusVibrate(Boolean status){ editor.putBoolean(KEY_VIBRATE, status); editor.commit(); } public Boolean getstatusVibrate(){ return preferences.getBoolean(KEY_VIBRATE, true); } } 

在您的活动电话:

 public class Home extends AppCompatActivity { private SettingsMain settings; private SwitchCompat switchVibrate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.master); setResources(); getSettings(); } private void setResources(){ switchVibrate = (SwitchCompat) findViewById(R.id.master_main_body_vibrate_switch); switchVibrate.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { settings.setStatusVibrate(isChecked); } }); } private void getSettings(){ settings = new SettingsMain(this); switchVibrate.setChecked(settings.getstatusVibrate()); } } 

那么全局使用staticvariables呢?

您可以按照本教程中的说明进行操作 。 我知道处理内容提供​​商是不必要的,只是保留一些标志。

否则,您可以查看Android提供的共享首选项 。 这是一个很好的例子 。

这将是我的build议。