Урок 91. AsyncTask. Поворот экрана

Обсуждение уроков
Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение Isaev » 30 окт 2013, 13:04

P.S. В форуме верно заметили, что есть небольшой изъян в этом всем. Будет плохо, если onProgressUpdate выполнится между моментом, когда старое Activity выполнит метод unLink, и моментом, когда новое Activity выполнит метод link. В этом случае у нас activity будет равен null и мы получим NullPointerException. Вероятность это всего, конечно, мала, но решать проблему как-то надо.
Не сказал бы, что она мала... можно имитировать падение при каждом старте, несколько раз превернув экран :(

Код: Выделить всё

10-30 09:44:58.545: WARN/dalvikvm(977): threadid=7: thread exiting with uncaught exception (group=0x4001d800)
10-30 09:44:58.575: ERROR/AndroidRuntime(977): FATAL EXCEPTION: AsyncTask #1
        java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:200)
        at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
        at java.util.concurrent.FutureTask.run(FutureTask.java:137)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
        at java.lang.Thread.run(Thread.java:1096)
        Caused by: java.lang.NullPointerException
        at ru.example.AsyncTaskRotate.MainActivity$MyTask.doInBackground(MainActivity.java:63)
        at ru.example.AsyncTaskRotate.MainActivity$MyTask.doInBackground(MainActivity.java:43)
        at android.os.AsyncTask$2.call(AsyncTask.java:185)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
        ... 4 more
10-30 09:44:58.625: INFO/WindowManager(59): Setting rotation to 0, animFlags=0
10-30 09:44:58.737: WARN/ActivityManager(59): Force finishing activity ru.example.AsyncTaskRotate/.MainActivity
А Ваш предложенный метод не получается реализовать, вы бы привели его в уроке чтоли, все же спотыкаются на этом NullPointerException

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение KamiSempai » 30 окт 2013, 14:12

Isaev писал(а):
P.S. В форуме верно заметили, что есть небольшой изъян в этом всем. Будет плохо, если onProgressUpdate выполнится между моментом, когда старое Activity выполнит метод unLink, и моментом, когда новое Activity выполнит метод link. В этом случае у нас activity будет равен null и мы получим NullPointerException. Вероятность это всего, конечно, мала, но решать проблему как-то надо.
Не сказал бы, что она мала... можно имитировать падение при каждом старте, несколько раз превернув экран :(

Код: Выделить всё

10-30 09:44:58.545: WARN/dalvikvm(977): threadid=7: thread exiting with uncaught exception (group=0x4001d800)
10-30 09:44:58.575: ERROR/AndroidRuntime(977): FATAL EXCEPTION: AsyncTask #1
        java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:200)
        at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
        at java.util.concurrent.FutureTask.run(FutureTask.java:137)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
        at java.lang.Thread.run(Thread.java:1096)
        Caused by: java.lang.NullPointerException
        at ru.example.AsyncTaskRotate.MainActivity$MyTask.doInBackground(MainActivity.java:63)
        at ru.example.AsyncTaskRotate.MainActivity$MyTask.doInBackground(MainActivity.java:43)
        at android.os.AsyncTask$2.call(AsyncTask.java:185)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
        ... 4 more
10-30 09:44:58.625: INFO/WindowManager(59): Setting rotation to 0, animFlags=0
10-30 09:44:58.737: WARN/ActivityManager(59): Force finishing activity ru.example.AsyncTaskRotate/.MainActivity
А Ваш предложенный метод не получается реализовать, вы бы привели его в уроке чтоли, все же спотыкаются на этом NullPointerException
Для этого придумали synchronized.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Zeban
Сообщения: 26
Зарегистрирован: 30 окт 2013, 06:46
Откуда: Благовещенск

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение Zeban » 30 окт 2013, 14:17

KamiSempai писал(а):Дважды запускать один таймер нельзя.
Как нельзя, объясните. У меня есть рабочее приложение где таймер отсчитывает свое время, выполняет задачу, дает отчет пользователю.
Далее пользователь запускает таймер по новой с другими входными данными.(Это все прекрасно работает)

Вот только проблема в блокировке экрана. Я так понял экран пересоздается как в смене ориентации и результата на экране нет. Так почему без сохранения ссылок таймер запускается многократно, а с сохранением работает единожды, не пойму.

Пробовал его убивать с помощью cancelTask(), но это не то.

Ваш код запускает его один раз и все, а мне этого не надо, мне надо по истечении времени еще раз стартануть.

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение Isaev » 30 окт 2013, 14:31

KamiSempai писал(а):Для этого придумали synchronized.
оно было забраковано автором чуть выше :)
damager82 писал(а):А synchronized для link и unlink зачем? synchronized защищает метод от одновременного запуска, а у нас тут все последовательно - старое Activity отпустило, новое приняло.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение KamiSempai » 30 окт 2013, 14:43

Zeban писал(а):
KamiSempai писал(а):Дважды запускать один таймер нельзя.
Как нельзя, объясните. У меня есть рабочее приложение где таймер отсчитывает свое время, выполняет задачу, дает отчет пользователю.
Далее пользователь запускает таймер по новой с другими входными данными.(Это все прекрасно работает)

Вот только проблема в блокировке экрана. Я так понял экран пересоздается как в смене ориентации и результата на экране нет. Так почему без сохранения ссылок таймер запускается многократно, а с сохранением работает единожды, не пойму.

Пробовал его убивать с помощью cancelTask(), но это не то.

Ваш код запускает его один раз и все, а мне этого не надо, мне надо по истечении времени еще раз стартануть.
Все по тому, что AsyncTask - это "одноразовый" объект. Для запуска нового таймера нужно создать новый AsyncTask. Как будет работать кнопка зависит от того , какой код вы напишете при Status.RUNNING и Status.FINISHED.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Zeban
Сообщения: 26
Зарегистрирован: 30 окт 2013, 06:46
Откуда: Благовещенск

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение Zeban » 30 окт 2013, 15:27

Ничего не пойму.
Допустим мне нужно приложение где я жму на кнопку, включается AsyncTask он отчитывает 60 сек на экране, далее пользователь снова может нажать на кнопку и процесс повториться.
Я не пойму зачем мне Status.RUNNING и Status.FINISHED если я могу просто заблокировать кнопку в onPreExecute() и разблокировать в onPostExecute, что я в принципе и делаю.

Проблема в другом, когда я вызываю многократно mt.execute(); в своем исходном приложении все работает прекрасно, а в приложении где я попытался применить метод сохранения ссылок при повороте экрана, execute вызывается один раз при повторном вызове дает ошибку.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение KamiSempai » 30 окт 2013, 16:46

По тому, что если не сохранять ссылки, создастся новый объект AsyncTask который еще не запущен.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Zeban
Сообщения: 26
Зарегистрирован: 30 окт 2013, 06:46
Откуда: Благовещенск

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение Zeban » 30 окт 2013, 17:45

KamiSempai писал(а):По тому, что если не сохранять ссылки, создастся новый объект AsyncTask который еще не запущен.
Так вот, это главный вопрос.

Как мне вызвать AsyncTask если я не могу его пересоздать?

Может можно к нему как то обратиться кроме execute.

Или другой способ передачи ссылок.

Или как то заморозить layout, чтоб он не пересоздавался после блокировки экрана.

Zeban
Сообщения: 26
Зарегистрирован: 30 окт 2013, 06:46
Откуда: Благовещенск

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение Zeban » 01 ноя 2013, 15:28

Все я сам справился. Все на самом деле очень просто, даже этот урок не пригодился. Добавляем в манифест где нужное нам активити android:configChanges="orientation|keyboardHidden|screenSize". И все вот ресурс где можно почитать , что делает каждая из команд: http://developer.android.com/guide/topi ... ement.html.

EvilAngel
Сообщения: 28
Зарегистрирован: 16 апр 2013, 23:55

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение EvilAngel » 14 янв 2014, 21:01

[?] Кто-нибудь сталкивался с проблемой, когда на некоторых реальных устройствах, часть кода, перенесенная в AsyncTask, отказывается корректно работать, бросая в лог следующее сообщение о фатальной ошибке:
01-14 01:36:47.529: E/dalvikvm(11294): threadid=1: stuck on threadid=14, giving up
01-14 01:36:47.529: A/libc(11294): Fatal signal 16 (SIGSTKFLT) at 0x00002c1e (code=-6), thread 11315 (AsyncTask #4)
Причем, если подсоединить телефон к компу и запустить в режиме отладки из Eclips, то всё работает нормально. При обычном же запуске на устройстве не работает, а логи выдают вышеуказанную ошибку. Кроме того, с NDK программа дел не имеет, никаких сторонних библиотек не подключено.

Тестировалось на:
  • Asus Transformer Pad Infinity TF700T
  • Samsung I9082 Galaxy Grand Duos
  • LG Optimus L7 II Dual p715-именно на этом устройстве происходит описанное предательское поведение
(других устройств не имею)

Более подробно я расписал на StackOverFlow(Fatal signal 16 (SIGSTKFLT) has been occured unexpectedly)

Я в реальном опупении. Помогите, плиз, кто чем может)

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение Mikhail_dev » 15 янв 2014, 00:01

А можно полный лог выложить, а не его кусок?

EvilAngel
Сообщения: 28
Зарегистрирован: 16 апр 2013, 23:55

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение EvilAngel » 19 янв 2014, 01:36

m090050 писал(а):А можно полный лог выложить, а не его кусок?
Добрый день.
После отлучки, спешу выложить свой лог:

Код: Выделить всё

01-19 00:15:16.936: E/Trace(19187): error opening trace file: No such file or directory (2)
01-19 00:15:16.956: V/ActivityThread(19187): Class path: /data/app/vsp.upgeninc.hdlivewallpaper-1.apk, JNI path: /data/data/vsp.upgeninc.hdlivewallpaper/lib
01-19 00:15:23.266: W/Resources(19187): Converting to boolean: TypedValue{t=0x3/d=0x2f "false" a=3 r=0x7f05001f}
01-19 00:15:23.266: W/Resources(19187): Converting to boolean: TypedValue{t=0x3/d=0x2f "false" a=3 r=0x7f050013}
01-19 00:15:23.266: W/Resources(19187): Converting to boolean: TypedValue{t=0x3/d=0x2f "false" a=3 r=0x7f050017}
01-19 00:15:23.266: W/Resources(19187): Converting to boolean: TypedValue{t=0x3/d=0x2f "false" a=3 r=0x7f05001b}
01-19 00:15:23.266: W/Resources(19187): Converting to boolean: TypedValue{t=0x3/d=0x3c "true" a=3 r=0x7f050023}
01-19 00:15:23.276: W/Resources(19187): Converting to boolean: TypedValue{t=0x3/d=0x2f "false" a=3 r=0x7f05002b}
01-19 00:15:36.686: D/MY_TEST_MESSAGE(19187): WallpaperService.onCreate()
01-19 00:15:36.756: D/MY_TEST_MESSAGE(19187): onSharedPreferenceChanged()
01-19 00:15:36.756: D/MY_TEST_MESSAGE(19187): WallpaperService.onCreateEngine()
01-19 00:15:36.766: D/MY_TEST_MESSAGE(19187): Engine.onCreate()
01-19 00:15:36.796: D/MY_TEST_MESSAGE(19187): Engine.onSurfaceCreated()
01-19 00:15:36.796: D/MY_TEST_MESSAGE(19187): Engine.onSurfaceChanged()
01-19 00:15:36.796: D/MY_TEST_MESSAGE(19187): Engine.onVisibilityChanged()
01-19 00:15:36.796: D/MY_TEST_MESSAGE(19187): Engine.onVisibilityChanged()
01-19 00:15:36.816: D/MY_TEST_MESSAGE(19187): Engine.onVisibilityChanged()
01-19 00:15:36.826: D/MY_TEST_MESSAGE(19187): Engine.onOffsetChanged()
01-19 00:15:36.876: D/dalvikvm(19187): GC_FOR_ALLOC freed 2507K, 30% free 9859K/13955K, paused 19ms, total 19ms
01-19 00:15:36.906: D/MYTEST_MESSAGE(19187): ERROR IN startAnimation() function
01-19 00:15:43.536: D/MY_TEST_MESSAGE(19187): onDoubleTap released
01-19 00:15:44.756: W/dalvikvm(19187): threadid=2: spin on suspend #1 threadid=16 (pcf=0)
01-19 00:15:45.506: W/dalvikvm(19187): threadid=2: spin on suspend #2 threadid=16 (pcf=3)
01-19 00:15:45.506: I/dalvikvm(19187): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 00:15:45.506: I/dalvikvm(19187):   | group="system" sCount=0 dsCount=0 obj=0x4185de80 self=0x402ab370
01-19 00:15:45.506: I/dalvikvm(19187):   | sysTid=19189 nice=0 sched=0/0 cgrp=apps handle=1074066712
01-19 00:15:45.506: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 00:15:45.506: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:45.506: I/dalvikvm(19187): "AsyncTask #5" prio=5 tid=16 RUNNABLE JIT
01-19 00:15:45.506: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x419a8dd8 self=0x51f620a0
01-19 00:15:45.506: I/dalvikvm(19187):   | sysTid=19245 nice=0 sched=0/0 cgrp=apps handle=1371986832
01-19 00:15:45.506: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=644 stm=2 core=0
01-19 00:15:45.506: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:~694)
01-19 00:15:45.506: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:1)
01-19 00:15:45.506: I/dalvikvm(19187):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-19 00:15:45.506: I/dalvikvm(19187):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-19 00:15:45.506: I/dalvikvm(19187):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-19 00:15:45.506: I/dalvikvm(19187):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-19 00:15:45.506: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-19 00:15:45.506: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:45.506: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:46.256: W/dalvikvm(19187): threadid=2: spin on suspend #3 threadid=16 (pcf=3)
01-19 00:15:46.256: I/dalvikvm(19187): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 00:15:46.256: I/dalvikvm(19187):   | group="system" sCount=0 dsCount=0 obj=0x4185de80 self=0x402ab370
01-19 00:15:46.256: I/dalvikvm(19187):   | sysTid=19189 nice=0 sched=0/0 cgrp=apps handle=1074066712
01-19 00:15:46.256: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 00:15:46.256: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:46.256: I/dalvikvm(19187): "AsyncTask #5" prio=5 tid=16 RUNNABLE JIT
01-19 00:15:46.256: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x419a8dd8 self=0x51f620a0
01-19 00:15:46.256: I/dalvikvm(19187):   | sysTid=19245 nice=0 sched=0/0 cgrp=apps handle=1371986832
01-19 00:15:46.266: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=716 stm=2 core=0
01-19 00:15:46.266: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:~694)
01-19 00:15:46.266: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:1)
01-19 00:15:46.266: I/dalvikvm(19187):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-19 00:15:46.266: I/dalvikvm(19187):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-19 00:15:46.266: I/dalvikvm(19187):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-19 00:15:46.266: I/dalvikvm(19187):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-19 00:15:46.266: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-19 00:15:46.266: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:46.266: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:47.016: W/dalvikvm(19187): threadid=2: spin on suspend #4 threadid=16 (pcf=3)
01-19 00:15:47.016: I/dalvikvm(19187): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 00:15:47.016: I/dalvikvm(19187):   | group="system" sCount=0 dsCount=0 obj=0x4185de80 self=0x402ab370
01-19 00:15:47.016: I/dalvikvm(19187):   | sysTid=19189 nice=0 sched=0/0 cgrp=apps handle=1074066712
01-19 00:15:47.016: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 00:15:47.016: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:47.016: I/dalvikvm(19187): "AsyncTask #5" prio=5 tid=16 RUNNABLE JIT
01-19 00:15:47.016: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x419a8dd8 self=0x51f620a0
01-19 00:15:47.016: I/dalvikvm(19187):   | sysTid=19245 nice=0 sched=0/0 cgrp=apps handle=1371986832
01-19 00:15:47.016: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=790 stm=2 core=0
01-19 00:15:47.016: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:~694)
01-19 00:15:47.016: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:1)
01-19 00:15:47.016: I/dalvikvm(19187):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-19 00:15:47.016: I/dalvikvm(19187):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-19 00:15:47.016: I/dalvikvm(19187):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-19 00:15:47.016: I/dalvikvm(19187):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-19 00:15:47.016: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-19 00:15:47.016: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:47.016: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:47.766: W/dalvikvm(19187): threadid=2: spin on suspend #5 threadid=16 (pcf=3)
01-19 00:15:47.766: I/dalvikvm(19187): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 00:15:47.766: I/dalvikvm(19187):   | group="system" sCount=0 dsCount=0 obj=0x4185de80 self=0x402ab370
01-19 00:15:47.766: I/dalvikvm(19187):   | sysTid=19189 nice=0 sched=0/0 cgrp=apps handle=1074066712
01-19 00:15:47.766: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 00:15:47.766: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:47.766: I/dalvikvm(19187): "AsyncTask #5" prio=5 tid=16 RUNNABLE JIT
01-19 00:15:47.766: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x419a8dd8 self=0x51f620a0
01-19 00:15:47.766: I/dalvikvm(19187):   | sysTid=19245 nice=0 sched=0/0 cgrp=apps handle=1371986832
01-19 00:15:47.766: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=865 stm=2 core=0
01-19 00:15:47.776: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:~694)
01-19 00:15:47.776: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:1)
01-19 00:15:47.776: I/dalvikvm(19187):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-19 00:15:47.776: I/dalvikvm(19187):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-19 00:15:47.776: I/dalvikvm(19187):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-19 00:15:47.776: I/dalvikvm(19187):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-19 00:15:47.776: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-19 00:15:47.776: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:47.776: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:48.526: W/dalvikvm(19187): threadid=2: spin on suspend #6 threadid=16 (pcf=3)
01-19 00:15:48.526: I/dalvikvm(19187): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 00:15:48.526: I/dalvikvm(19187):   | group="system" sCount=0 dsCount=0 obj=0x4185de80 self=0x402ab370
01-19 00:15:48.526: I/dalvikvm(19187):   | sysTid=19189 nice=0 sched=0/0 cgrp=apps handle=1074066712
01-19 00:15:48.526: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 00:15:48.526: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:48.526: I/dalvikvm(19187): "AsyncTask #5" prio=5 tid=16 RUNNABLE JIT
01-19 00:15:48.526: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x419a8dd8 self=0x51f620a0
01-19 00:15:48.526: I/dalvikvm(19187):   | sysTid=19245 nice=0 sched=0/0 cgrp=apps handle=1371986832
01-19 00:15:48.526: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=939 stm=2 core=0
01-19 00:15:48.526: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:~694)
01-19 00:15:48.526: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:1)
01-19 00:15:48.526: I/dalvikvm(19187):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-19 00:15:48.526: I/dalvikvm(19187):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-19 00:15:48.526: I/dalvikvm(19187):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-19 00:15:48.526: I/dalvikvm(19187):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-19 00:15:48.526: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-19 00:15:48.526: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:48.526: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:49.276: W/dalvikvm(19187): threadid=2: spin on suspend #7 threadid=16 (pcf=3)
01-19 00:15:49.276: I/dalvikvm(19187): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 00:15:49.276: I/dalvikvm(19187):   | group="system" sCount=0 dsCount=0 obj=0x4185de80 self=0x402ab370
01-19 00:15:49.276: I/dalvikvm(19187):   | sysTid=19189 nice=0 sched=0/0 cgrp=apps handle=1074066712
01-19 00:15:49.276: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1 stm=0 core=0
01-19 00:15:49.276: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:49.276: I/dalvikvm(19187): "AsyncTask #5" prio=5 tid=16 RUNNABLE JIT
01-19 00:15:49.276: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x419a8dd8 self=0x51f620a0
01-19 00:15:49.276: I/dalvikvm(19187):   | sysTid=19245 nice=0 sched=0/0 cgrp=apps handle=1371986832
01-19 00:15:49.276: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1013 stm=2 core=0
01-19 00:15:49.276: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:~694)
01-19 00:15:49.276: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:1)
01-19 00:15:49.276: I/dalvikvm(19187):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-19 00:15:49.286: I/dalvikvm(19187):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-19 00:15:49.286: I/dalvikvm(19187):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-19 00:15:49.286: I/dalvikvm(19187):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-19 00:15:49.286: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-19 00:15:49.286: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:49.286: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:50.036: W/dalvikvm(19187): threadid=2: spin on suspend #8 threadid=16 (pcf=3)
01-19 00:15:50.036: I/dalvikvm(19187): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 00:15:50.036: I/dalvikvm(19187):   | group="system" sCount=0 dsCount=0 obj=0x4185de80 self=0x402ab370
01-19 00:15:50.036: I/dalvikvm(19187):   | sysTid=19189 nice=0 sched=0/0 cgrp=apps handle=1074066712
01-19 00:15:50.036: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1 stm=0 core=0
01-19 00:15:50.036: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:50.036: I/dalvikvm(19187): "AsyncTask #5" prio=5 tid=16 RUNNABLE JIT
01-19 00:15:50.036: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x419a8dd8 self=0x51f620a0
01-19 00:15:50.036: I/dalvikvm(19187):   | sysTid=19245 nice=0 sched=0/0 cgrp=apps handle=1371986832
01-19 00:15:50.036: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1088 stm=2 core=0
01-19 00:15:50.036: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:~694)
01-19 00:15:50.036: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:1)
01-19 00:15:50.036: I/dalvikvm(19187):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-19 00:15:50.036: I/dalvikvm(19187):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-19 00:15:50.036: I/dalvikvm(19187):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-19 00:15:50.036: I/dalvikvm(19187):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-19 00:15:50.036: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-19 00:15:50.036: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:50.036: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:50.786: W/dalvikvm(19187): threadid=2: spin on suspend #9 threadid=16 (pcf=3)
01-19 00:15:50.786: I/dalvikvm(19187): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 00:15:50.786: I/dalvikvm(19187):   | group="system" sCount=0 dsCount=0 obj=0x4185de80 self=0x402ab370
01-19 00:15:50.786: I/dalvikvm(19187):   | sysTid=19189 nice=0 sched=0/0 cgrp=apps handle=1074066712
01-19 00:15:50.786: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1 stm=0 core=0
01-19 00:15:50.786: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:50.786: I/dalvikvm(19187): "AsyncTask #5" prio=5 tid=16 RUNNABLE JIT
01-19 00:15:50.786: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x419a8dd8 self=0x51f620a0
01-19 00:15:50.786: I/dalvikvm(19187):   | sysTid=19245 nice=0 sched=0/0 cgrp=apps handle=1371986832
01-19 00:15:50.786: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1162 stm=2 core=0
01-19 00:15:50.786: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:~694)
01-19 00:15:50.786: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:1)
01-19 00:15:50.786: I/dalvikvm(19187):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-19 00:15:50.786: I/dalvikvm(19187):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-19 00:15:50.786: I/dalvikvm(19187):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-19 00:15:50.786: I/dalvikvm(19187):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-19 00:15:50.786: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-19 00:15:50.796: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:50.796: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.546: W/dalvikvm(19187): threadid=2: spin on suspend #10 threadid=16 (pcf=3)
01-19 00:15:51.546: I/dalvikvm(19187): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 00:15:51.546: I/dalvikvm(19187):   | group="system" sCount=0 dsCount=0 obj=0x4185de80 self=0x402ab370
01-19 00:15:51.546: I/dalvikvm(19187):   | sysTid=19189 nice=0 sched=0/0 cgrp=apps handle=1074066712
01-19 00:15:51.546: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1 stm=0 core=0
01-19 00:15:51.546: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:51.546: I/dalvikvm(19187): "AsyncTask #5" prio=5 tid=16 RUNNABLE JIT
01-19 00:15:51.546: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x419a8dd8 self=0x51f620a0
01-19 00:15:51.546: I/dalvikvm(19187):   | sysTid=19245 nice=0 sched=0/0 cgrp=apps handle=1371986832
01-19 00:15:51.546: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1235 stm=2 core=0
01-19 00:15:51.546: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:~694)
01-19 00:15:51.546: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:1)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-19 00:15:51.546: I/dalvikvm(19187):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-19 00:15:51.546: I/dalvikvm(19187):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-19 00:15:51.546: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-19 00:15:51.546: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:51.546: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.546: E/dalvikvm(19187): Fatal spin-on-suspend, dumping threads
01-19 00:15:51.546: I/dalvikvm(19187): DALVIK THREADS:
01-19 00:15:51.546: I/dalvikvm(19187): (mutexes: tll=1 tsl=1 tscl=0 ghl=1)
01-19 00:15:51.546: I/dalvikvm(19187): "main" prio=5 tid=1 SUSPENDED
01-19 00:15:51.546: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x40fc86a0 self=0x400f3138
01-19 00:15:51.546: I/dalvikvm(19187):   | sysTid=19187 nice=0 sched=0/0 cgrp=apps handle=1075023664
01-19 00:15:51.546: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=455 stm=62 core=0
01-19 00:15:51.546: I/dalvikvm(19187):   at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:500)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:353)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:781)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.content.res.Resources.loadDrawable(Resources.java:1969)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.content.res.Resources.getDrawable(Resources.java:673)
01-19 00:15:51.546: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.drawFrame(HDLiveWallpaper.java:764)
01-19 00:15:51.546: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask$2.run(HDLiveWallpaper.java:658)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.os.Handler.handleCallback(Handler.java:615)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.os.Handler.dispatchMessage(Handler.java:92)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.os.Looper.loop(Looper.java:137)
01-19 00:15:51.546: I/dalvikvm(19187):   at android.app.ActivityThread.main(ActivityThread.java:4954)
01-19 00:15:51.546: I/dalvikvm(19187):   at java.lang.reflect.Method.invokeNative(Native Method)
01-19 00:15:51.546: I/dalvikvm(19187):   at java.lang.reflect.Method.invoke(Method.java:511)
01-19 00:15:51.546: I/dalvikvm(19187):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
01-19 00:15:51.546: I/dalvikvm(19187):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
01-19 00:15:51.556: I/dalvikvm(19187):   at dalvik.system.NativeStart.main(Native Method)
01-19 00:15:51.556: I/dalvikvm(19187): "AsyncTask #5" prio=5 tid=16 RUNNABLE JIT
01-19 00:15:51.556: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x419a8dd8 self=0x51f620a0
01-19 00:15:51.556: I/dalvikvm(19187):   | sysTid=19245 nice=0 sched=0/0 cgrp=apps handle=1371986832
01-19 00:15:51.556: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1235 stm=2 core=0
01-19 00:15:51.556: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:~694)
01-19 00:15:51.556: I/dalvikvm(19187):   at vsp.upgeninc.hdlivewallpaper.HDLiveWallpaper$WallpaperEngine$DrawTask.doInBackground(HDLiveWallpaper.java:1)
01-19 00:15:51.556: I/dalvikvm(19187):   at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-19 00:15:51.556: I/dalvikvm(19187):   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.556: I/dalvikvm(19187): "AsyncTask #4" prio=5 tid=15 WAIT
01-19 00:15:51.556: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x41b99ad8 self=0x4f505a00
01-19 00:15:51.556: I/dalvikvm(19187):   | sysTid=19244 nice=0 sched=0/0 cgrp=apps handle=1330953968
01-19 00:15:51.556: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=1
01-19 00:15:51.556: I/dalvikvm(19187):   at java.lang.Object.wait(Native Method)
01-19 00:15:51.556: I/dalvikvm(19187):   - waiting on <0x41b82978> (a java.lang.VMThread) held by tid=15 (AsyncTask #4)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.lang.Thread.parkFor(Thread.java:1231)
01-19 00:15:51.556: I/dalvikvm(19187):   at sun.misc.Unsafe.park(Unsafe.java:323)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.556: I/dalvikvm(19187): "AsyncTask #3" prio=5 tid=14 WAIT
01-19 00:15:51.556: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x41ba0768 self=0x4f8f4b28
01-19 00:15:51.556: I/dalvikvm(19187):   | sysTid=19242 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1371990160
01-19 00:15:51.556: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=15 stm=3 core=0
01-19 00:15:51.556: I/dalvikvm(19187):   at java.lang.Object.wait(Native Method)
01-19 00:15:51.556: I/dalvikvm(19187):   - waiting on <0x41ba0888> (a java.lang.VMThread) held by tid=14 (AsyncTask #3)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.lang.Thread.parkFor(Thread.java:1231)
01-19 00:15:51.556: I/dalvikvm(19187):   at sun.misc.Unsafe.park(Unsafe.java:323)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:51.556: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.566: I/dalvikvm(19187): "AsyncTask #2" prio=5 tid=13 WAIT
01-19 00:15:51.566: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x41ba03a0 self=0x4f8f44d0
01-19 00:15:51.566: I/dalvikvm(19187):   | sysTid=19241 nice=0 sched=0/0 cgrp=apps handle=1373547696
01-19 00:15:51.566: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=1
01-19 00:15:51.566: I/dalvikvm(19187):   at java.lang.Object.wait(Native Method)
01-19 00:15:51.566: I/dalvikvm(19187):   - waiting on <0x41ba04c0> (a java.lang.VMThread) held by tid=13 (AsyncTask #2)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.lang.Thread.parkFor(Thread.java:1231)
01-19 00:15:51.566: I/dalvikvm(19187):   at sun.misc.Unsafe.park(Unsafe.java:323)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.566: I/dalvikvm(19187): "AsyncTask #1" prio=5 tid=12 WAIT
01-19 00:15:51.566: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x41b9fd20 self=0x4f8f4080
01-19 00:15:51.566: I/dalvikvm(19187):   | sysTid=19240 nice=0 sched=0/0 cgrp=apps handle=1373547560
01-19 00:15:51.566: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=1
01-19 00:15:51.566: I/dalvikvm(19187):   at java.lang.Object.wait(Native Method)
01-19 00:15:51.566: I/dalvikvm(19187):   - waiting on <0x41b9ff10> (a java.lang.VMThread) held by tid=12 (AsyncTask #1)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.lang.Thread.parkFor(Thread.java:1231)
01-19 00:15:51.566: I/dalvikvm(19187):   at sun.misc.Unsafe.park(Unsafe.java:323)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.566: I/dalvikvm(19187): "pool-1-thread-1" prio=5 tid=11 WAIT
01-19 00:15:51.566: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x41b7ec40 self=0x5162c008
01-19 00:15:51.566: I/dalvikvm(19187):   | sysTid=19222 nice=0 sched=0/0 cgrp=apps handle=1330949392
01-19 00:15:51.566: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 00:15:51.566: I/dalvikvm(19187):   at java.lang.Object.wait(Native Method)
01-19 00:15:51.566: I/dalvikvm(19187):   - waiting on <0x41b7ed88> (a java.lang.VMThread) held by tid=11 (pool-1-thread-1)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.lang.Thread.parkFor(Thread.java:1231)
01-19 00:15:51.566: I/dalvikvm(19187):   at sun.misc.Unsafe.park(Unsafe.java:323)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-19 00:15:51.566: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.566: I/dalvikvm(19187): "Binder_2" prio=5 tid=10 NATIVE
01-19 00:15:51.566: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x41861ff8 self=0x514a40b8
01-19 00:15:51.566: I/dalvikvm(19187):   | sysTid=19202 nice=0 sched=0/0 cgrp=apps handle=1372943960
01-19 00:15:51.566: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1 stm=0 core=1
01-19 00:15:51.606: I/dalvikvm(19187):   #00  pc 0000cb90  /system/lib/libc.so (__ioctl+8)
01-19 00:15:51.606: I/dalvikvm(19187):   #01  pc 00027f6d  /system/lib/libc.so (ioctl+16)
01-19 00:15:51.606: I/dalvikvm(19187):   #02  pc 00016ba9  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+124)
01-19 00:15:51.606: I/dalvikvm(19187):   #03  pc 0001738f  /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+154)
01-19 00:15:51.606: I/dalvikvm(19187):   #04  pc 0001afc9  /system/lib/libbinder.so
01-19 00:15:51.606: I/dalvikvm(19187):   #05  pc 00010e37  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+114)
01-19 00:15:51.606: I/dalvikvm(19187):   #06  pc 00049755  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+44)
01-19 00:15:51.606: I/dalvikvm(19187):   #07  pc 0001099d  /system/lib/libutils.so
01-19 00:15:51.606: I/dalvikvm(19187):   #08  pc 00012df0  /system/lib/libc.so (__thread_entry+48)
01-19 00:15:51.606: I/dalvikvm(19187):   #09  pc 00012548  /system/lib/libc.so (pthread_create+172)
01-19 00:15:51.606: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:51.606: I/dalvikvm(19187): "Binder_1" prio=5 tid=9 NATIVE
01-19 00:15:51.606: I/dalvikvm(19187):   | group="main" sCount=1 dsCount=0 obj=0x41861d10 self=0x516d4b38
01-19 00:15:51.606: I/dalvikvm(19187):   | sysTid=19201 nice=0 sched=0/0 cgrp=apps handle=1372007712
01-19 00:15:51.606: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=1 stm=0 core=0
01-19 00:15:51.606: I/dalvikvm(19187):   #00  pc 0000cb90  /system/lib/libc.so (__ioctl+8)
01-19 00:15:51.606: I/dalvikvm(19187):   #01  pc 00027f6d  /system/lib/libc.so (ioctl+16)
01-19 00:15:51.606: I/dalvikvm(19187):   #02  pc 00016ba9  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+124)
01-19 00:15:51.606: I/dalvikvm(19187):   #03  pc 0001738f  /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+154)
01-19 00:15:51.606: I/dalvikvm(19187):   #04  pc 0001afc9  /system/lib/libbinder.so
01-19 00:15:51.616: I/dalvikvm(19187):   #05  pc 00010e37  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+114)
01-19 00:15:51.616: I/dalvikvm(19187):   #06  pc 00049755  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+44)
01-19 00:15:51.616: I/dalvikvm(19187):   #07  pc 0001099d  /system/lib/libutils.so
01-19 00:15:51.616: I/dalvikvm(19187):   #08  pc 00012df0  /system/lib/libc.so (__thread_entry+48)
01-19 00:15:51.616: I/dalvikvm(19187):   #09  pc 00012548  /system/lib/libc.so (pthread_create+172)
01-19 00:15:51.616: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:51.616: I/dalvikvm(19187): "FinalizerWatchdogDaemon" daemon prio=5 tid=8 SUSPENDED
01-19 00:15:51.616: I/dalvikvm(19187):   | group="system" sCount=1 dsCount=0 obj=0x4185e548 self=0x5159b6d0
01-19 00:15:51.616: I/dalvikvm(19187):   | sysTid=19200 nice=0 sched=0/0 cgrp=apps handle=1364720608
01-19 00:15:51.616: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.VMThread.sleep(Native Method)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Thread.sleep(Thread.java:1031)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Thread.sleep(Thread.java:1013)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:222)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.616: I/dalvikvm(19187): "FinalizerDaemon" daemon prio=5 tid=7 WAIT
01-19 00:15:51.616: I/dalvikvm(19187):   | group="system" sCount=1 dsCount=0 obj=0x4185e398 self=0x51a02958
01-19 00:15:51.616: I/dalvikvm(19187):   | sysTid=19199 nice=0 sched=0/0 cgrp=apps handle=1375097136
01-19 00:15:51.616: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=1
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Object.wait(Native Method)
01-19 00:15:51.616: I/dalvikvm(19187):   - waiting on <0x40fbe690> (a java.lang.ref.ReferenceQueue)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Object.wait(Object.java:401)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:169)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.616: I/dalvikvm(19187): "ReferenceQueueDaemon" daemon prio=5 tid=6 WAIT
01-19 00:15:51.616: I/dalvikvm(19187):   | group="system" sCount=1 dsCount=0 obj=0x4185e230 self=0x5159bb80
01-19 00:15:51.616: I/dalvikvm(19187):   | sysTid=19198 nice=0 sched=0/0 cgrp=apps handle=1372856544
01-19 00:15:51.616: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=1
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Object.wait(Native Method)
01-19 00:15:51.616: I/dalvikvm(19187):   - waiting on <0x40fbe5b8> 
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Object.wait(Object.java:364)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:129)
01-19 00:15:51.616: I/dalvikvm(19187):   at java.lang.Thread.run(Thread.java:856)
01-19 00:15:51.626: I/dalvikvm(19187): "Compiler" daemon prio=5 tid=5 VMWAIT
01-19 00:15:51.626: I/dalvikvm(19187):   | group="system" sCount=1 dsCount=0 obj=0x4185e140 self=0x51c6cdf8
01-19 00:15:51.626: I/dalvikvm(19187):   | sysTid=19197 nice=0 sched=0/0 cgrp=apps handle=1373557552
01-19 00:15:51.626: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=15 stm=9 core=0
01-19 00:15:51.626: I/dalvikvm(19187):   #00  pc 0000dca0  /system/lib/libc.so (__futex_syscall3+8)
01-19 00:15:51.626: I/dalvikvm(19187):   #01  pc 00012e34  /system/lib/libc.so (__pthread_cond_timedwait_relative+48)
01-19 00:15:51.626: I/dalvikvm(19187):   #02  pc 00012e90  /system/lib/libc.so (__pthread_cond_timedwait+60)
01-19 00:15:51.626: I/dalvikvm(19187):   #03  pc 0006e927  /system/lib/libdvm.so
01-19 00:15:51.626: I/dalvikvm(19187):   #04  pc 00054397  /system/lib/libdvm.so
01-19 00:15:51.626: I/dalvikvm(19187):   #05  pc 00012df0  /system/lib/libc.so (__thread_entry+48)
01-19 00:15:51.626: I/dalvikvm(19187):   #06  pc 00012548  /system/lib/libc.so (pthread_create+172)
01-19 00:15:51.626: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:51.626: I/dalvikvm(19187): "JDWP" daemon prio=5 tid=4 VMWAIT
01-19 00:15:51.626: I/dalvikvm(19187):   | group="system" sCount=1 dsCount=0 obj=0x4185e058 self=0x4f503008
01-19 00:15:51.626: I/dalvikvm(19187):   | sysTid=19196 nice=0 sched=0/0 cgrp=apps handle=1366430200
01-19 00:15:51.626: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=1
01-19 00:15:51.626: I/dalvikvm(19187):   #00  pc 0000ccb8  /system/lib/libc.so (select+20)
01-19 00:15:51.626: I/dalvikvm(19187):   #01  pc 000605d9  /system/lib/libdvm.so
01-19 00:15:51.626: I/dalvikvm(19187):   #02  pc 00063025  /system/lib/libdvm.so
01-19 00:15:51.626: I/dalvikvm(19187):   #03  pc 00054397  /system/lib/libdvm.so
01-19 00:15:51.626: I/dalvikvm(19187):   #04  pc 00012df0  /system/lib/libc.so (__thread_entry+48)
01-19 00:15:51.636: I/dalvikvm(19187):   #05  pc 00012548  /system/lib/libc.so (pthread_create+172)
01-19 00:15:51.636: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:51.636: I/dalvikvm(19187): "Signal Catcher" daemon prio=5 tid=3 VMWAIT
01-19 00:15:51.636: I/dalvikvm(19187):   | group="system" sCount=1 dsCount=0 obj=0x4185df60 self=0x402ac560
01-19 00:15:51.636: I/dalvikvm(19187):   | sysTid=19195 nice=0 sched=0/0 cgrp=apps handle=1371986144
01-19 00:15:51.636: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=1
01-19 00:15:51.636: I/dalvikvm(19187):   #00  pc 0000d554  /system/lib/libc.so (__rt_sigtimedwait+12)
01-19 00:15:51.636: I/dalvikvm(19187):   #01  pc 0001a257  /system/lib/libc.so (sigwait+20)
01-19 00:15:51.636: I/dalvikvm(19187):   #02  pc 00051ca7  /system/lib/libdvm.so
01-19 00:15:51.636: I/dalvikvm(19187):   #03  pc 00054397  /system/lib/libdvm.so
01-19 00:15:51.636: I/dalvikvm(19187):   #04  pc 00012df0  /system/lib/libc.so (__thread_entry+48)
01-19 00:15:51.636: I/dalvikvm(19187):   #05  pc 00012548  /system/lib/libc.so (pthread_create+172)
01-19 00:15:51.636: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:51.636: I/dalvikvm(19187): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 00:15:51.636: I/dalvikvm(19187):   | group="system" sCount=0 dsCount=0 obj=0x4185de80 self=0x402ab370
01-19 00:15:51.636: I/dalvikvm(19187):   | sysTid=19189 nice=0 sched=0/0 cgrp=apps handle=1074066712
01-19 00:15:51.636: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=3 stm=0 core=0
01-19 00:15:51.636: I/dalvikvm(19187):   at dalvik.system.NativeStart.run(Native Method)
01-19 00:15:51.636: I/dalvikvm(19187): NATIVE THREADS:
01-19 00:15:51.636: I/dalvikvm(19187): "AsyncTask #3" sysTid=19243 nice=10 sched=0/0 cgrp=apps/bg_non_interactive
01-19 00:15:51.636: I/dalvikvm(19187):   | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 00:15:51.636: E/dalvikvm(19187): threadid=2: stuck on threadid=16, giving up
01-19 00:15:51.636: A/libc(19187): Fatal signal 16 (SIGSTKFLT) at 0x00004af3 (code=-6), thread 19245 (AsyncTask #5)
01-19 00:15:58.786: E/Trace(19309): error opening trace file: No such file or directory (2)
01-19 00:15:58.796: V/ActivityThread(19309): Class path: /data/app/vsp.upgeninc.hdlivewallpaper-1.apk, JNI path: /data/data/vsp.upgeninc.hdlivewallpaper/lib
01-19 00:15:58.806: D/MY_TEST_MESSAGE(19309): WallpaperService.onCreate()
01-19 00:15:58.846: D/MY_TEST_MESSAGE(19309): onSharedPreferenceChanged()
01-19 00:15:58.846: D/MY_TEST_MESSAGE(19309): WallpaperService.onCreateEngine()
01-19 00:15:58.856: D/MY_TEST_MESSAGE(19309): Engine.onCreate()
01-19 00:15:58.876: D/MY_TEST_MESSAGE(19309): Engine.onSurfaceCreated()
01-19 00:15:58.876: D/MY_TEST_MESSAGE(19309): Engine.onSurfaceChanged()
01-19 00:15:58.876: D/MY_TEST_MESSAGE(19309): Engine.onVisibilityChanged()
01-19 00:15:58.876: D/MY_TEST_MESSAGE(19309): Engine.onVisibilityChanged()
01-19 00:15:58.886: D/MY_TEST_MESSAGE(19309): Engine.onVisibilityChanged()
01-19 00:15:58.896: D/MY_TEST_MESSAGE(19309): Engine.onOffsetChanged()
01-19 00:15:58.936: D/MYTEST_MESSAGE(19309): ERROR IN startAnimation() function
01-19 00:16:11.726: D/MY_TEST_MESSAGE(19309): Engine.onVisibilityChanged()
Причём, как мне советовали на stackoverflow, из-за потенциального превышения лимита времени между lockCanvas() и unlockCanvasAndPost() весь image processing я выделил отдельно от непосредственного вывода на канву и всё это дело проверил на совсем уж мини-jpeg'ах 48x48. Но результат тот же(см. выше: 408-ая строка лога): Fatal signal 16 (SIGSTKFLT).

EvilAngel
Сообщения: 28
Зарегистрирован: 16 апр 2013, 23:55

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение EvilAngel » 21 янв 2014, 17:03

Доброго всем дня!
Мой вопрос снимается. Причина была в многократном потокообразовании (более 13-ти тяжёлых потоков работали одновременно). Теперь, сведя всё ко двум потокам - UI и DrawTask, проблема испарилась.

soci0pat
Сообщения: 1
Зарегистрирован: 13 фев 2014, 20:21

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение soci0pat » 13 фев 2014, 20:29

damager82 писал(а): Если метод устарел, это не значит, что он не вызывается. Просто, вместо него рекомендуется использовать свойство retainInstance у фрагментов.

А тут еще выше человек написал, что можно использовать AsyncTaskLoader. Я с Loader-ами вообще еще не сталкивался. Кто-нибудь может подтвердить или опровергнуть?
Если гугл рекомендует, то следует прислушаться, чтоб это не стало внезапными граблями.
Вот такую конструкцию компилятор воспринимает без подчеркиваний.

Код: Выделить всё

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
        if (savedInstanceState != null) {
            filterState = savedInstanceState.getBoolean("filterState");
        } else {
            filterState = false;
        }
   }

    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putBoolean("filterState", filterState);
    }

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение Mikhail_dev » 13 фев 2014, 22:06

Если гугл рекомендует, то следует прислушаться, чтоб это не стало внезапными граблями.
Это повод узнать причину, а не значит, что использовать не надо. Банальный пример. А почему собственно fill_parent поменяли на match_parent ?

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение altwin » 13 фев 2014, 22:17

А тут еще выше человек написал, что можно использовать AsyncTaskLoader. Я с Loader-ами вообще еще не сталкивался. Кто-нибудь может подтвердить или опровергнуть?
Нас колько я понимаю Loaders, по сути -это бэкэнд для Content Provider, т.е. используются в связке, далее есть такая фигня в доках:
Decide if you need a content provider.

You need to build a content provider if you want to provide one or more of the following features:

You want to offer complex data or files to other applications.
You want to allow users to copy complex data from your app into other apps.
You want to provide custom search suggestions using the search framework.
You don't need a provider to use an SQLite database if the use is entirely within your own application.
т.е. по сути если вы не выходите за пределы своего приложение вам эти провайдеры нафик не нужны... мне кажется лоадеру туда же дорога :)
Изображение

kusraevs
Сообщения: 2
Зарегистрирован: 12 сен 2014, 18:12

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение kusraevs » 12 сен 2014, 18:34

А что делать, если при уничтожении Activity надо отменить Asynctask(в моем случае таймер), но при повороте нужно его сохранить и передать новому Activity.
То есть в момент вызова onDestroy() нужно знать, будет ли восстанавливаться Activity.
Есть вариант перенести создание Asynctask в onCreate() вспомогательного fragment c setRetainInstance(true).
Есть ли другие варианты?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение Mikhail_dev » 12 сен 2014, 18:38

А что делать, если при уничтожении Activity надо отменить Asynctask(в моем случае таймер), но при повороте нужно его сохранить и передать новому Activity.
есть такая вещь, как лодеры (Loader). они появились с Android 3.0 и реализуют то, о чем вы говорите. Чтобы в лодере был уже асинкТаск, юзайте AsyncTaskLoader. Это наиболее правильный на данный момент вариант использования таких запросов.
Он работает так: если запрос еще не выполнен, а мы повернули экран, то он убьет старый запрос и при повороте создаст новый и потом вернет результат. Т.е. ошибок не будет при поворотах, разве что запрос пересоздастся.

kusraevs
Сообщения: 2
Зарегистрирован: 12 сен 2014, 18:12

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение kusraevs » 12 сен 2014, 18:44

Спасибо за ответ.
В том то и проблема, что при повороте я не хочу убивать старый запрос. Я хочу, чтобы он продолжился.

vovaxo
Сообщения: 2
Зарегистрирован: 29 окт 2012, 22:39

Re: Урок 91. AsyncTask. Поворот экрана

Сообщение vovaxo » 08 окт 2014, 15:39

Дело в том, что метод Activity#onRetainNonConfigurationInstance() устаревший начиная с API левела 13. Поэтому этот урок не слишком актуален. Зато есть хороший пост, который описывает все преимущества и недостатки вариантов обработки поворота экрана при выполнении фоновых операций:
http://www.androiddesignpatterns.com/20 ... anges.html

Ответить