我知道還有其他人提出了類似的問題,但我一直無法獲得有關如何在調用bindService時弄錯的答案。嘗試連接到2個服務時,Android bindService返回false
基本上我寫了一個應用程序連接到2服務。他們都在我的清單中:
<service android:name="com.test.LService"></service>
<service android:name="com.test.CService"></service>
CService按預期工作並始終有效。我昨天添加了LService,它根本不會啓動。請注意,最初我在MainActivity中使用了我的LocationListener實現,但我想收集獨立於活動焦點的GPS座標。爲了節省空間,我只需粘貼LService相關的代碼,因爲這是我遇到的服務。在我的MainActivity:
在LService類,所有綁定的東西,你會期望:
private final IBinder mBinder = new LBinder();
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
public class LBinder extends Binder {
public LService getService() {
return LService.this;
}
}
這可能是一個問題的唯一的事情就是我的LService實現LocationListener的:
public class LocService extends Service implements LocationListener {
...
CService沒有實現任何東西,它只是擴展服務就像它應該。你認爲將LocationListener作爲一個工具去除,並在一個子類中重新實現它會有訣竅嗎?是否有一些Android反射看到了這個工具並確定它不適合作爲服務?爲什麼沒有例外?有任何想法嗎?謝謝!
更新:嗯,這不是因爲LocationListener的實現。我從LService中移除了這個工具,它仍然返回FALSE。嘆息...
UPDATE2:試圖調試的情況很粗糙,但CService下降到ClassLoader而LService根本沒有。是否有可能在某處存在不正確的某個類標識符?!?一切看起來都對我好。
UPDATE3:我放棄了,只是將LocationListener合併到我的CService服務中......我會盡可能地關閉這個問題。
我打算說先嚐試做startService(),然後綁定到它。即使在啓動後,也應該允許您綁定它。 – Tyler 2013-03-12 22:45:52