Android服务中的线程和消息处理

时间:2012-11-09 10:45:07

标签: android android-service

我有一个服务,在启动时,会启动一个应该是服务“主线程”的线程。该服务绑定到另外两个服务,这是我正在使用的库的一部分。在这个线程中,我想处理从它绑定的服务发送到服务的消息(因为这是绑定的工作方式......对吗?)。绑定顺利(返回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(),但这只是使应用程序挂在该行上。

所以我的问题是,如何解决问题并将消息传递到我想要的位置?我知道我的应用程序架构可能不是最佳的,所以请随时提供有关如何改进它的建议。

0 个答案:

没有答案