android链接的侦听器列表

时间:2012-03-31 20:23:37

标签: android list listener

我有一个听众列表。 当一个事件发生时我想运行抛出列表并向它们发送一条消息。 由于某种原因,下一个代码不起作用:

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?

1 个答案:

答案 0 :(得分:0)

您不应该从已注册的清单BroadcastReceiver注册侦听器。正如您所注意到的,此对象在onReceive()返回后立即被销毁。清单注册的BroadcastReceiver本身不能执行超出onReceive()结尾的任何操作。