我有一个服务,在启动时,会启动一个应该是服务“主线程”的线程。该服务绑定到另外两个服务,这是我正在使用的库的一部分。在这个线程中,我想处理从它绑定的服务发送到服务的消息(因为这是绑定的工作方式......对吗?)。绑定顺利(返回true)但我的问题是我似乎根本无法收到任何消息。我的设置说明如下:
服务:
class MyService extends Service {
onCreate(...) {
myServiceApp = new MyServiceApp(this);
}
onStartCommand(...) {
Thread thread = new Thread(myServiceApp);
thread.start();
}
}
主线程类:
class MyServiceApp() {
private Service service;
final Handler mHandler = new Handler() {
void handleMessage(Message msg) {
...
}
};
void run() {
boolean as = service.bindService(new Intent(...), ..., Context.BIND_AUTO_CREATE));
boolean ctrl = service.bindService(new Intent(...), ..., Context.BIND_AUTO_CREATE));
Looper.prepare();
while(true) {
...
}
}
}
现在,我知道为了能够声明这样的处理程序,我需要一个线程的消息循环,所以我在run方法中调用prepare()。我还觉得我需要在while循环的每个回合中运行消息循环,所以我在那里添加了一个Looper.loop(),但这只是使应用程序挂在该行上。
所以我的问题是,如何解决问题并将消息传递到我想要的位置?我知道我的应用程序架构可能不是最佳的,所以请随时提供有关如何改进它的建议。