/ Metoda usługi / Android wywołana w innym wątku. Czy nadal działa na głównym wątku? - Java, Android, wielowątkowość, serwis

Metoda usługi Android wywoływana w innym wątku. Czy nadal działa na głównym wątku? - Java, Android, wielowątkowość, usługi

Jeśli dobrze rozumiem, Android Services domyślnie działa w głównym wątku interfejsu użytkownika. Tak więc, aby zadziałała jakakolwiek operacja poza głównym wątkiem, znalazłem ludzi sugerujących, że jeden rozpoczyna osobny wątek w Service.

Moje pytanie brzmi jednak, czy: ServiceMetoda jest wywoływana w innym wątku, tj. AsyncTask lub new Thread(...).start();, robi ServiceMetoda działa w wątku wywołującym? Czy działa w wątku głównym, który podobno Service biegnie?

Innymi słowy,

new Thread(new Runnable() {

@Overrde
public void run() {
myAndroidService.doSomething();
}
}).start();

byłoby MyAndroidService#doSomething() zostać wezwanym w tym nowym Thread?

Odpowiedzi:

6 dla odpowiedzi № 1

Metoda jest zawsze uruchamiana w wątku, który ją wywołuje.

Metoda tak naprawdę nie należy do żadnego wątku, więc tak, mimo że metoda jest zdefiniowana w Twojej usłudze, zostanie wykonana w AsyncTask wątek, a nie główny wątek, w którym działa usługa.


1 dla odpowiedzi nr 2

Tak, jak wspomniano powyżej Martin.

Ponadto możesz sprawdzić informacje o wątku metody przez:

private void doSomething(){
Log.i(TAG, "I"m doing something in thread " + Thread.currentThread().toString());
}