2011-05-02 142 views
0

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

onServiceConnected add listener: [email protected] 

(从我的主要活动,当我做到以下几点:

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

然后形成服务:

Adding new listener [[email protected]]... new listener size = 1 

然后我按后退按钮和:

onDestroy of main activity, removing listener: [email protected] 

,形成服务:

Removing listener [[email protected]]... new listener size = 1 

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

回答

4

问题在该示例(比较链路)是一个列表与对应

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

代替用于收听者收集

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

代替

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

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

参数(在我看来)不是被引用到同一个监听器,而是RemoteCallbackList处理这个问题。