2011-05-02 184 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處理這個問題。