我知道还有其他人提出了类似的问题,但在调用bindService时,我无法得到如何克服错误的答案。
基本上我写了一个连接到2个服务的应用程序。他们都在我的清单中:
<service android:name="com.test.LService"></service>
<service android:name="com.test.CService"></service>
CService按预期工作并且始终如此。我昨天添加了LService,它根本不会启动。请注意,我最初在MainActivity中使用了LocationListener imeplement,但我想收集GPS coords而不依赖于焦点的Activity。为了节省空间,我只需粘贴LService相关代码,因为它是我遇到问题的服务。在我的MainActivity中:
@Override
protected void onStart() {
super.onStart();
// bindService for LService always returns FALSE?!?!
Log.d(TAG, "LService: " + this.context.bindService(new Intent(this, LService.class), mLConnection, Context.BIND_AUTO_CREATE));
Log.d(TAG, "CService: " + this.context.bindService(new Intent(this, CService.class), mCConnection, Context.BIND_AUTO_CREATE));
}
private ServiceConnection mLocConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
LocBinder binder = (LocBinder) service;
mLocService = binder.getService();
mLocBound = true;
}
@Override
public void onServiceDisconnected(ComponentName className) {
mLocBound = false;
}
};
在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服务中......我会尽可能地关闭这个问题。
答案 0 :(得分:0)
我无法关闭这个问题所以我只会回答我最终做的事情。
我放弃了,只是将LocationListener合并到了我的CService服务中,并放弃了试图弄清楚为什么我的第二个服务不起作用。仍然对意见感兴趣!