您可以使用廣播接收器進行您的活動。您可以發送廣播,如果您的活動處於「活動狀態」並且已註冊接收廣播,則可以從那裏觸發recyclerView更新。
發送當您創建要收到此意圖這樣
Intent intent = new Intent("key_to_identify_the_broadcast");
Bundle bundle = new Bundle();
bundle.putBoolean("updateRecyclerView",true);
intent.putExtra("bundle_key_for_intent", bundle);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
,並在活動通知中的廣播,你可以使用廣播接收器
private final BroadcastReceiver mHandleMessageReceiver = new
BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle =
intent.getExtras().getBundle("bundle_key_for_intent");
if(bundle!=null){
boolean shouldRefresh = bundle.getBoolean("updateRecyclerView");
if(shouldRefresh){
//Refresh your recyclerView
}
}
}
};
您需要註冊並取消註冊接收器工作
在您的onResume方法中,您可以註冊該接收器以接收廣播
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
IntentFilter filter = new IntentFilter("key_to_identify_the_broadcast");
LocalBroadcastManager.getInstance(this)
.registerReceiver(mHandleMessageReceiver,filter);
}
您還需要註銷之前,你的活動被暫停
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
try {
LocalBroadcastManager.getInstance(this)
.unregisterReceiver(mHandleMessageReceiver);
} catch (Exception e) {
Log.e("UnRegister Error", "> " + e.getMessage());
}
}
你能只登記你的活動作爲廣播接收器本身併發送自己的廣播(自定義類型)時被觸發的警報?然後該活動可以更新自己的回收商視圖。 –
你想要哪一個?檢查活動的具體前景或檢查應用程序的前景? 如果您只是想調用MyActivity.updateMyRecyclerView(),您可以創建廣播接收器並將您的「updateMyRecyclerView」代碼添加到該廣播中,然後將廣播接收器註冊到LocalBroadcastReceiver。我使用這種方式來更新來自Firebase.onMessageReceived服務的回收站視圖 – zihadrizkyef