我有一個活動,有onReceive
(電池廣播)和服務,將數據插入共享首選項。然後從活動中獲得這些數據。我的問題是,只有在更改手機方向時纔會刷新數據。如果我不這樣做,Activity會顯示舊的Shared Preferences數據。任何幫助將不勝感激。強制活動重新加載(如方向一)
我想知道什麼:
- 如何更新我的Broadscast
onReceive
法活動。 - 爲什麼SharedPreferences未正確表示?
我有一個活動,有onReceive
(電池廣播)和服務,將數據插入共享首選項。然後從活動中獲得這些數據。我的問題是,只有在更改手機方向時纔會刷新數據。如果我不這樣做,Activity會顯示舊的Shared Preferences數據。任何幫助將不勝感激。強制活動重新加載(如方向一)
我想知道什麼:
onReceive
法活動。做到這一點,我只是請手動重新啓動活動......這裏是我用
public void reload() {
Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
}
使用這種方法就不會有動畫由於過渡的實現方法具..
兩個想法:
1)當你在你的服務編輯共享偏好,一定要打電話apply()
或commit()
實際更新您的共享偏好。
2)在您的活動中,請確保您通過registerSharedPreferenceListener註冊了一個共享偏好聽衆,以便您知道何時在您的活動中更新了您的偏好。
當您旋轉手機時,活動被重新創建。你可以完成,並重新啓動您的活動:
finish();
startActivity(getIntent());
我不知道這是否是您的情況最好的選擇,但我刷新我的活動與使用該Web服務,它工作正常!
您註冊接收者在你的活動或你的清單? – 2013-03-11 13:28:23
是的活動,和電池水平,溫度更新在我的活動,巴士共享喜好不。也許我需要延遲一段時間?然後嘗試訪問共享首選項? – whiteLT 2013-03-11 13:29:25