我有一个听众列表。 当一个事件发生时我想运行抛出列表并向它们发送一条消息。 由于某种原因,下一个代码不起作用:
private List<Listener> internetListeners = new ArrayList<Listener>();
private Iterator<Listener> it;
public void updateInternetListeners(boolean state)
{
Listener listener;
it = internetListeners.iterator();
if (state)
Log.d("Listener", "updating true");
else
Log.d("Listener", "updating false");
while (it.hasNext())
{
listener = (Listener)it.next();
listener.onInternetStateChange(state);
}
}
我的侦听活动:
@Override
public void onInternetStateChange(boolean state) {
if (state)
text.setText("Internet is On");
else
text.setText("Internet is Off");
}
EDITED: 好的,我发现了我的问题...... 这个类扩展了BroadcastReceiver。列表在这个类中。 eveytime互联网状态是变化的,它创建了这个类的一个新实例,并且注册的监听器不适用于这个实例。我做了什么shell?
答案 0 :(得分:0)
您不应该从已注册的清单BroadcastReceiver
注册侦听器。正如您所注意到的,此对象在onReceive()
返回后立即被销毁。清单注册的BroadcastReceiver
本身不能执行超出onReceive()
结尾的任何操作。