Android 服务中的 sharedPreferences 为空

Android sharedPreferences inside service is empty

我有一个在启动时运行服务的 android 应用程序。在我的 MainActivity 中,我将数据写入 sharedPreferences:

    String id="something";
    SharedPreferences sp = this.getPreferences(this.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    editor.putString("opt", id);
    editor.commit();

我想读取 运行 服务中的数据,但输出是 "empty":

   String content="empty";
   SharedPreferences settings  = this.getApplication().getSharedPreferences("settings",Context.MODE_PRIVATE);
   content =settings.getString("opt", "empty");
   Log.i("opt:",opt); // Logs "empty"

SharedPreferences 是否在服务和应用程序之间共享?还是其他问题?

添加时,您使用默认的私有共享首选项,但在获取值时,您调用特殊命名的共享首选项 ("settings")。这将调用另一个名为 "settings" 的文件。这就是为什么你的价值是空的。默认和 named("settings") 共享首选项不同。