Я определил AsyncTask и создал экземпляр внутри класса MapView. Все работает отлично, за исключением случаев, когда Android решает убить окно, затем, когда я пытаюсь повторно открыть действие, приложение вылетает с NoClassDefFoundError для моего AsyncTask. Я также пытался сделать класс AsyncTask статическим, но ничего не изменилось.
Я проверял это несколько раз, и я вполне уверен, что сбой произошел из-за ранее убитой активности.
[Update] Я не опубликовал трассировку стека, потому что не увидел ничего релевантного. Я провел еще несколько тестов и теперь вижу в журнале что-то, что может быть подсказкой:
I/ActivityManager( 144): Displayed activity com.myorg.myApp/.MyActivity: 4456 ms (total 4456 ms)
I/dalvikvm( 3413): **Rejecting re-init on previously-failed class** Lcom/myorg/myApp/MyMapView$MyAsyncTask; v=0x0
D/AndroidRuntime( 3413): Shutting down VM
W/dalvikvm( 3413): threadid=1: thread exiting with uncaught exception (group=0x400207e8)
E/AndroidRuntime( 3413): FATAL EXCEPTION: main
E/AndroidRuntime( 3413): java.lang.NoClassDefFoundError: com.myorg.myApp.MyMapView$MyAsyncTask
E/AndroidRuntime( 3413): at com.myorg.myApp.MyMapView$4.run(MyMapView.java:169)
E/AndroidRuntime( 3413): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime( 3413): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 3413): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 3413): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( 3413): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3413): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 3413): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 3413): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime( 3413): at dalvik.system.NativeStart.main(Native Method)
Строка: I / dalvikvm (3413): Отклонение повторной инициализации в ранее неудачном классе
Заставляет меня думать, что это происходит из-за предыдущей ошибки, но я не вижу других следов стека в журнале или сообщений об ошибках.