[英]Android | Continuously update UI on receiving a push notification
我想在收到推送通知后立即更新UI,類似地,Facebook如何更新其通知計數。
我所取得的成就:
問題:
我處於活動(UI)中,並且通知不斷出現,因此更改了共享首選項中的值。 現在,直到我移至另一個活動並返回之前,我的UI才會更新。 UI是在onCreate方法中創建的。
問題:如何在通知到達后立即連續更新UI,而又不離開或更改當前活動(UI)。
謝謝
如果您在共享首選項中存儲值,則建議不要在活動中使用OnSharedPreferenceChangeListener http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html 。
當您存儲數據的方法存在疑問時,您可以注冊 OnSharedPreferenceChangeListener
。 更改首選項后,這將收到回調。 請注意,它必須是一個實例變量,而不是內部匿名類。
private OnSharedPreferenceChangeListener preferenceChangeListener = new OnSharedPreferenceChangeListener() {
@Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
updateNotificationCount();
}
};
您可以按以下方式進行注冊(假設您只是使用默認的共享prefs文件):
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPrefs(context);
sharedPrefs.registerOnSharedPreferenceChangeListener(preferenceChangeListener);
您可以將您的活動注冊為與當前班級相同的廣播,使用sendOrderedBroadcast
可以指定接收者獲取廣播消息的順序。 在這里,您可以將“活動”放在比其他班級更高的優先級上,
A)更新您的共享首選項B)更新您的文本視圖
然后調用abortBroadcast,我將為您提供示例代碼:
發送廣播的類:
Intent intent = new Intent();
intent.setAction("increase action");
intent.putExtra("new value");
context.sendOrderedBroadcast(intent,null);
您的活動
首先,您必須創建一個廣播接收器
private class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Do your work
abortBroadcast();
}
}
然后注冊
IntentFilter filterSync = new IntentFilter();
filterSync.addAction("increase action");
filterSync.setPriority(100);
registerReceiver(myregister, filterSync);
記住這一點,您必須在onResume
方法中注冊BroadcastReceiver
,而在onPause
方法中取消注冊。
希望能幫助到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.