14

我有一个服务,其中有4 个全局静态 int 变量 ,并且我有一个 BOOT COMPLETE 和 Call 事件的接收器。我要做的是在执行呼叫事件接收器时保存这4个变量,并在执行启动接收器时检索它们(当然当我重新启动手机时)但两者都不起作用..另一件事是共享首选项在以下情况下也很有用设备重启??代码如下

    SharedPreferences saved_values = this.getSharedPreferences(
              "com.example.app", Context.MODE_PRIVATE);
    saved_values.edit().putInt("call", MyService.callcount);
    saved_values.edit().putInt("callend",MyService.callendcount);
    saved_values.edit().putInt("network",MyService.network_count);
    saved_values.edit().putInt("ringing",MyService.ringingcount);
    saved_values.edit().commit();

并用于检索

     SharedPreferences saved_values = this.getSharedPreferences(
                  "com.example.app", Context.MODE_PRIVATE);
          MyService.callcount = saved_values.getInt("call", -10);
          MyService.ringingcount=saved_values.getInt("ringing", -10);
          MyService.    network_count=saved_values.getInt("network", -10);
          MyService.        callendcount=saved_values.getInt("callend", -10);
4

3 回答 3

26

我使用了它,它对我有用。

为了节省

SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
 SharedPreferences.Editor editor=saved_values.edit();
     editor.putInt("count",count);
             editor.putInt("foo",foo);
     editor.commit();

并用于检索

     SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

        count = saved_values.getInt("count", -1);
于 2013-07-26T05:30:28.007 回答
14

问题是每次调用 edit() 时都会创建一个新的 Editor 对象。您应该持有一个 Editor 对象的实例并对其执行所有操作。

使用以下

        SharedPreferences saved_values = this.getSharedPreferences(
                "com.example.app", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor=saved_values.edit();
        editor.putInt("call", MyService.callcount);
        editor.putInt("callend", MyService.callendcount);
        editor.putInt("network", MyService.network_count);
        editor.putInt("ringing", MyService.ringingcount);
        editor.commit();
于 2013-07-25T08:32:17.790 回答
0

在看到人们如何在共享偏好管理(例如编辑、检索以及它是默认的还是自定义的)方面苦苦挣扎之后,我创建了一个开源库,以便通过一行代码轻松保存和检索共享偏好。

public class SimplePrefExample extends Activity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    new SimplePrefs.Builder()
            .setPrefsName("myapppreference")
            .setContext(this)
            .setMode(MODE_PRIVATE)
            .setDefaultUse(false)
            .build();

}

} 创建简单首选项后,您可以轻松地编辑和检索数据。

public class SimplePrefExample extends Activity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SimplePrefs.putInt("myid", 384);
    SimplePrefs.putString("username", "smash");
}

}

该库解决了许多问题,例如检查偏好的可用性等。

您可以在链接https://github.com/farruhha/SimplePrefs中获取详细信息

于 2018-08-17T21:21:07.967 回答