2014-01-08 9 views
1

Если я использую этот фрагмент кода в onCreate() MyService начнет работу в новом потоке или начнется ли он в основном потоке?Можно ли запустить службу в новом потоке?

new Thread(new Runnable() { 

    @Override 
    public void run() { 
     startService(new Intent(this, MyService.class)); 
    } 
}); 

Извините, если это очевидно, но я новичок в android. Я много исследовал, и я не нашел ничего определенного. Спасибо

+0

и по этой причине вы не проверили код показали нам до спрашивая, что именно? –

+0

Это не будет компиляция события, так как 'this' ссылается на экземпляр анонимного объекта' Runnable'. – gunar

+0

Извините! Замените это на MainActivity.this. Это простой пример для понимания вопроса. Мой вопрос: если кто-нибудь знает, будет ли служба работать в майне или в этом потоке? – user3041210

ответ

1

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

запустить службу в onCreate() из Activity

new Thread("myThread"){ 
     public void run() { 
      Intent intent = new Intent(MainActivity.this, MyService.class); 
      startService(intent); 
     }; 
    }.start(); 

и проверить имена темы в OnCreate() из службы ...

public class MyService extends Service { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     String name = Thread.currentThread().getName(); 
     if(name.equals("myThread")) { 
      // service started in new Thread... 
     } 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
} 
+0

«Служба» будет работать ТОЛЬКО в потоке пользовательского интерфейса. Единственное исключение - «IntentService» – gunar

+0

@gunar. Я так ответил ... но код должен подтвердить вручную ... –

+0

ok. Благодарю. Проблема в том, что у меня есть несколько сервисов, которые я хочу запустить в одном рабочем потоке. Я думаю, что единственная возможность - создать рабочий поток, использовать обработчик для передачи задач рабочему потоку. – user3041210

Смежные вопросы