2010-09-01 26 views

Odpowiedz

6

Zastosowane przez użytkownika HandlerThread nie jest narażone na działanie zestawu SDK. Jego priorytetem jest Process.THREAD_PRIORITY_DEFAULT jako priorytet.

Należy pamiętać, że IntentService to 143 linie kodu, w tym białe spacje i komentarze, więc możesz rozważyć sklonowanie go tak, aby miał jeden z priorytetem, którego szukasz.

+0

Dzięki Mark. Właśnie to zrobiłem. – smith324

-4

Zmieniłem priorytet IntentService za pomocą: "android.os.Process.setThreadPriority (android.os.Process.THREAD_PRIORITY_BACKGROUND);" w konstruktorze klasy IntentService.

W moim przypadku to było zmieniane od: "Process.THREAD_PRIORITY_DEFAULT", który jest zero (0) do "Process.THREAD_PRIORITY_BACKGROUND", która jest dziesięć (10), a wynik był widoczny.

+2

Zmieniasz priorytet wątku, który tworzy IntentService, a nie priorytetem wątku, w którym działał program obsługi. Zobacz akceptowaną odpowiedź, aby uzyskać więcej informacji. – espinchi

12

Można ustawić Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND) w metodzie intencji usługi onHandleIntent().

Rozwiązanie autorstwa CommonsWare również działa. Ten jest jednak prostszy.

0

Tylko po to, aby było jasne - domyślnie IntentService priorytet ma wartość domyślną - Process.THREAD_PRIORITY_DEFAULT, ponieważ korzysta z niego wewnętrznie: HandlerThread. Możesz użyć Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND) w OnHandleIntent(), lub cokolwiek zasugerowała CommonsWare w odpowiedzi.

niektórzy ludzie podnieśli to jako bug. i dostępne jest również patch.

Powiązane problemy