android:IPC删除监听器

时间:2011-05-02 14:56:28

标签: android service ipc

我使用这个tutorial来创建我自己的:远程服务。它有效,但有一个问题:我无法删除监听器。 跟踪是:

onServiceConnected add listener: net.ServiceGP$1@44930168 

(从我的主要活动开始,当我执行以下操作时:

startService(i);
bindService(i, serviceConnection, 0);

然后形成服务:

Adding new listener [net.bgtask.ServiceListener$Stub$Proxy@44916d30]... new listener size = 1

然后我按回按钮并:

onDestroy of main activity, removing listener: net.ServiceGP$1@44930168

并形成服务:

Removing listener   [net.bgtask.ServiceListener$Stub$Proxy@44917440]... new listener size = 1

很奇怪......在活动中我有相同的对象,但在服务中有不同的对象。 为什么这样?

1 个答案:

答案 0 :(得分:4)

此示例(比较链接)中的问题是列表用于侦听器集合

private List<TweetCollectorListener> listeners = new ArrayList<TweetCollectorListener>();

而不是

private RemoteCallbackList<TweetCollectorListener> listeners = new RemoteCallbackList<TweetCollectorListener>();

与相应的

(1) listeners.register(listener);
(2) listeners.unregister(listener);

而不是

(1) listeners.add(listener);
(2) listeners.remove(listener);

参数(在我看来)不是对同一个Listener的引用,而是RemoteCallbackList处理这个问题。