将少量信息保存为安卓中的设置(就像第一次运行该应用程序一样)



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

有一个简单的选择吗?我只想保存和阅读一些小信息。

使用sharedPreferencefiles保存数据,但更好的选项是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();

使用SharedPreferences

SharedPreferences preferences = getSharedPreferences("prefName", MODE_PRIVATE);
SharedPreferences.Editor edit= preferences.edit();
edit.putBoolean("isFirstRun", false);
edit.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创建多个设置。这些设置存储在设备上,因此在关闭应用程序后可以使用。

当您尝试检索尚未创建的NAME_OF_PREFERENCES时,您将创建一个新的。在此处查看更多类似的行为。

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

我建议您选择SharedPreference持久存储。它非常简单快速地存储/检索少量信息。

请参阅代码以从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());
    }
}

全局使用static变量怎么样?

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

否则,您可以查看Android提供的共享首选项。下面是一个很好的入门示例。

这将是我的建议。

相关内容

  • 没有找到相关文章

最新更新