문제

나는 Asynctask를 확장하는 완전히 별도의 클래스를 가지고 있으며, HTML 가져 오기를 실행하기 위해 사용하므로 UI를 동결하지 못합니다. Asynctask Im의 생성자는 작업의 .execute ()를 호출하는 활동의 컨텍스트를 전달하므로 HTMLGet이 실행되는 동안 ProgressDialog를 표시 할 수 있습니다. 첫 번째 문제가 발생했습니다. 전화를 회전 할 때 현재보기가 파괴되었으며 대화 상자의 .dismiss ()의 .dismiss ()에 도달하면 더 이상 존재하지 않기 때문에 추락했습니다. 나는이 문제를 사건의 95 %와 같이 해결할 수 있었다. 그러나 나머지 5 %는 여전히 문제가있다. 내 원래의 해결책은 Asynctask에 활동을 전달하고

호출하여 HTMLGet이 실행되는 동안 내 원래의 해결책은 강제로 회전을 비활성화하는 것이 었습니다.
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
.

onpreexecute () 및 호출

activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
.

onPostExecute ()에서 사용자가 화면을 회전하더라도 현재 활동을 파괴하지 않습니다. 그러나 내가 이미 언급했듯이, 나머지 5 %에서는 여전히 문제가 있으며, 이는 힘을 가깝게합니다. 내가 알고있는 모든 것은 다음과 같습니다 :

이 스택 트레이가 있습니다.이 사용자는 Android 마켓을 통해 나를 제공했습니다.

java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:381)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:226)
at android.view.Window$LocalWindowManager.removeView(Window.java:432)
at android.app.Dialog.dismissDialog(Dialog.java:278)
at android.app.Dialog.access$000(Dialog.java:71)
at android.app.Dialog$1.run(Dialog.java:111)
at android.app.Dialog.dismiss(Dialog.java:268)
at com.vasga.telvira.AsyncHttpGetter.onPostExecute(AsyncHttpGetter.java:160)
at com.vasga.telvira.AsyncHttpGetter.onPostExecute(AsyncHttpGetter.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)
.

Asynctask에서 다음 줄에 발생합니다 (이것은 스택 트레이스에서 언급 한 160 번째 줄) :

if(pd.isShowing()) pd.dismiss(); //dismiss the pd after we are done, if it is visible(it should be)
.

PD.IsShowing ()은 가능한 해결책으로 IF 절을 추가 할 수 있습니다.

My Application은 Android 1.6.x와 호환되지만 Eclipse에서 Android 2.2.x에 대한 컴파일 레벨이 있으므로 "SD 카드로 이동"기능이 활성화되어 있기 때문에

몇 가지 사용자에게 메시지를 보냈습니다. HTMLGet을 시작하고 ProgressDialog가 팝업을 가장 많이 볼 수 있습니다.

응용 프로그램이 충돌합니다.

어떤 아이디어를 일으킬 수 있습니까? 또는 어떻게 해결하는 방법? 나의 nosensor 접근 방식이 정확합니까?

도움이 되었습니까?

해결책

오류가 사라졌습니다. 적어도 새 버전에서 새로운 보고서를받지 못했습니다.제가 한 일은 주요 활동에서 이것을 겹쳐 씁니다.

public Dialog onCreateDialog(int id)
.

그 다음에 나는 활동을 일에 전달하고, 처음에 NoSensor Thingie를 시운 한 다음, 대화 상자를 보여 주었을 때,

activity.showDialog(0);
.

그런 다음 내가 그것을 해산해야했을 때 나는 이것을했다 :

activity.dismissDialog(0);
.

이런 식으로 작동하는 것 같습니다.구조가있는 경우 나에게 용서, 내 개발자 컴퓨터가 아닌 IM :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top