在服务中运行多个线程

时间:2011-06-20 16:17:01

标签: android multithreading service

我正在尝试同时运行线程。我按照Android开发者网站上的服务指南(http://developer.android.com/guide/topics/fundamentals/services.html)。

我稍微修改了代码,这样就不会只等待5秒钟,而是每秒记录一条消息。

输出是: MSG1 MSG1 MSG1 MSG1 MSG1

问题是我无法弄清楚如何同时运行其中两个线程,因此输出为: msg1 msg2 msg1 msg2 ....

我一直收到msg1 msg1 msg1 msg1 msg1 msg2 msg2 msg2 ...

以下是我的onStartCommand()的代码:

@Override
public int onStartCommand(Intent intent, int flags, final int startId) {
    Log.v("testService","onStartCommand()");

    new Thread() {
        // This method is called when the thread runs
        public void run() {
            Message msg = mHandler.obtainMessage();
            msg.arg1 = startId;
            mHandler.sendMessage(msg);
        }
    }.start();

    return START_STICKY;
}

这不应该为每个请求创建一个新线程,以便前一个请求不是阻塞吗?

1 个答案:

答案 0 :(得分:0)

它将为处理程序创建一个新的线程发送每个请求,但处理程序的代码将在实例化处理程序的任何线程上执行,而不是发送消息的线程。 Handlers的重点是为线程间通信提供一种简单的方法。