我有以下问题: 一个片段让我多次一个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