我有一个服务,其中有 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();
并用于检索
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);
答案 0 :(得分:23)
我用过它,它对我有用。
保存
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);
答案 1 :(得分: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();
答案 2 :(得分: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链接中获得详细信息