Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在服务中运行多个线程_Android_Multithreading_Service - Fatal编程技术网

Android 在服务中运行多个线程

Android 在服务中运行多个线程,android,multithreading,service,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 m

我正在尝试同时运行线程。我遵循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 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;
}