Запуск нескольких потоков в Сервисе - PullRequest
0 голосов
/ 20 июня 2011

Я пытаюсь запустить потоки одновременно. Я следовал руководству по обслуживанию на сайте разработчиков Android (http://developer.android.com/guide/topics/fundamentals/services.html).

Я немного изменил код, чтобы вместо ожидания 5 секунд каждую секунду регистрировалось сообщение.

Вывод: msg1 msg1 msg1 msg1 msg1

Проблема в том, что я не могу понять, как запустить два из этих потоков одновременно, так что вывод: msg1 msg2 msg1 msg2 ....

Я продолжаю получать сообщения MSG1 MSG1 MSG1 MSG1 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 голосов
/ 21 июня 2011

Это создаст новый поток для отправки каждого запроса к обработчику, но код для обработчика будет выполняться в любом потоке, который создает экземпляр обработчика, а не в потоке, который отправляет сообщение. Весь смысл Handlers состоит в том, чтобы предоставить простой метод связи между потоками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...