我有以下問題: 一個片段讓我多次一個broadcastRecivier:廣播接收多次關閉和打開活動
的onCreate我的片段:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Filtro de acciones que serán alertadas
IntentFilter filter = new IntentFilter("serv_connected");
filter.addAction("amigos_list");
// Crear un nuevo ResponseReceiver
receiver = new ResponseReceiverFragment();
// Registrar el receiver y su filtro
LocalBroadcastManager.getInstance(getContext()).registerReceiver(
receiver,
filter);
activity = ((SocialActivity) getActivity());
}
這裏的廣播,這內我的片段;
// Broadcast receiver que recibe las emisiones desde los servicios
private class ResponseReceiverFragment extends BroadcastReceiver {
// Sin instancias
private ResponseReceiverFragment() {
}
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case "serv_connected":
MyService aux = activity.getmService();
mUserList = MyService.xmpp.getOnlineUsers();
iconloader.hide();
break;
}
}
}
該片段位於包含滑動標籤的3片段的活動中,沒有什麼稀有。
問題如下: 當我輸入並觸發廣播活動時,片段接收正確。 現在,如果我回來,(關閉活動),我再次打開活動,該片段接收廣播的兩倍,等等...等等等
這是怎麼回事? 如果您需要更多代碼,我可以添加。
謝謝
我想刪除的接收器註銷我的問題解決了你的碎片沒有被緩存或者保存狀態,因此,Android會繼續觸發'onCreate()' - 當調用onCreate()時添加一些登錄到輸出,並且從那裏開始,你需要弄清楚管理狀態 – brandall
因爲我可以知道狀態嗎? 我知道,我沒有保留任何東西或緩存:-S .... 但它不安全。 我該如何檢查? 謝謝 – daicon
在'onCreate()'中添加日誌記錄並檢查logcat,以查看它被調用的次數以及調用次數 - 例如,每次在製表符之間滑動時等。一旦瞭解了行爲,就可以搜索一篇關於如何使用滑動標籤保存Fragment狀態的文章。 – brandall