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

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

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

  • 数据库的ORMLite更新
  • 光标窗口:窗口已满
  • Android中的单个应用程序中的多个数据库
  • Android的 - SQLite数据库存储在哪里
  • 如何使用我自己的sqlite数据库?
  • 如何在SQLite中删除多行的参数?
  • Android资源文件夹中的外部数据库
  • 如何从android中的sqlite数据库检索数据,并显示在TextView中
  • 使用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议。