Android共享首选项不起作用

Ate*_*eeq 14 android sharedpreferences

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

    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();
Run Code Online (Sandbox Code Playgroud)

并用于检索

     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);
Run Code Online (Sandbox Code Playgroud)

Ate*_*eeq 24

我用过这个,它对我有用.

为了节省

SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
 SharedPreferences.Editor editor=saved_values.edit();
     editor.putInt("count",count);
             editor.putInt("foo",foo);
     editor.commit();
Run Code Online (Sandbox Code Playgroud)

并用于检索

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

        count = saved_values.getInt("count", -1);
Run Code Online (Sandbox Code Playgroud)

  • 感谢您发布此内容.Straight SharedPreferences没有按规定工作. (4认同)

Vip*_*hah 13

问题是每次调用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();
Run Code Online (Sandbox Code Playgroud)