我有一个后台服务,可以读取 cpu 使用情况和频率并将其显示在通知栏上
在应用程序设置(首选项)中,我可以选择仅显示频率负载或两者
但是获取共享首选项的方法不会获得最新的 SharedPreference
它仅在第一次服务启动时获得 SharedPreference,如果我在 Preference 屏幕中选择了不同的选项,它不会在服务中更新
这是代码
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Runnable runnable = new Runnable() {@Override
public void run() {
while (thread) {
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
items = sharedPrefs.getString("notif", "freq");
System.out.println(items); //this keeps displaying the same value even if i go to Preference screen and change to something else
if (items.equals("freq") || items.equals("both")) {
}
if (items.equals("load") || items.equals("both")) {
} //reading frequency and load depending on what is selected
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
mHandler.post(new Runnable() {@Override
public void run() {
if (thread) {
createNotification(); //create notification
}
}
});
}
}
};
new Thread(runnable).start();
return START_STICKY;
}