gpt4 book ai didi

android - 多次收到广播以关闭和打开 Activity

转载 作者:行者123 更新时间:2023-11-29 17:13:54 32 4
gpt4 key购买 nike

我有以下问题:一个 fragment 让我多次收到一个 broadcastRecivier:

创建我的 fragment :

@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());

}

这里是广播,这是我的 fragment ;

// 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;

}
}
}

该 fragment 在一个 Activity 中,该 Activity 包含 3 个带有滑动标签的 fragment ,没什么稀奇的。

问题如下:当我进入并触发广播 Activity 时, fragment 会正确接收。现在,如果我回来(关闭 Activity )并再次打开 Activity , fragment 会收到两次广播,依此类推……等等。

这是怎么回事?如果您需要更多代码,我可以添加。

谢谢

最佳答案

感谢评论,我成功解决了:

1º - 有必要在 onDestroy 或 OnPause 中注销:

        getActivity().registerReceiver(receiver, filter);

2º 在启动广播时他这样做了:

            LocalBroadcastManager.getInstance(getBaseContext()).sendBroadcast(localIntent);

但这样做是有必要的:

            getApplicationContext().sendBroadcast(localIntent);

我仍然不明白为什么(1 个月前我在 android 中编程)

如果有人能解释一下,不胜感激。

一句问候

关于android - 多次收到广播以关闭和打开 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39792128/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com