バッテリー情報を追跡して共有設定に保存するサービスがあります。それから私が持っている私の主な活動からBroadcastReceiver
(それはOnReceive
リスニングのために持っていますACTION_BATTERY_CHANGED
)
OnReceive が発生するたびにバッテリー レベルと温度が変化しますが、画面の向きを変更するまで共有設定は同じままです (アクティビティの再現のためだと思います)。どうにかして onReceive メソッドも共有設定を更新できるようにしてください。
私の主な活動:
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
appPrefs = new AppPreferences(getApplicationContext());
}
......
/* Broadcast Receiver for battery stats */
BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
.....
private TextView text;
int level = -1;
@Override
public void onReceive(Context context, Intent intent) {
level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
text=(TextView) findViewById(R.id.TV_text);
text.setText("level"+level+"something from Shared Pref"+appPrefs.getAnything());
}
}
}
私の共有設定:
public class AppPreferences extends PreferenceActivity {
private static final String APP_SHARED_PREFS = "com.aydabtu.BroadcastSMS_preferences"; // Name of the file -.xml
private SharedPreferences appSharedPrefs;
private Editor prefsEditor;
public AppPreferences(Context context)
{
this.appSharedPrefs = context.getSharedPreferences(APP_SHARED_PREFS, Activity.MODE_PRIVATE);
this.prefsEditor = appSharedPrefs.edit();
}
public long getAnything() {
return appSharedPrefs.getLong("Anything", 9);
}
public void setAnything(long a) {
prefsEditor.putLong("Anything", a);
prefsEditor.commit();
}
私のサービス:
BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
......
appPrefs.setAnything(a);
では、共有設定が OnReceive メソッドのレベルまたは温度として更新されないのはなぜですか? そして、何をすべきか?どんな助けでも大歓迎です。:)