현재 마켓에 올라간 앱이 에러를 뱉어내고 있습니다-ㅁ-;

아래 Stack Trace를 보면 setVisibility를 AsyncTask 스레드에서 해서 checkThread에서 Crash가 나는거 같은데 재현이 안되고 있어서 고치는데 애를 먹고 있습니다;;

검색해본 결과 UI 변경을 다른 Thread에서 할 경우 크래쉬난다고 해서 setVisibility 하는 부분은 핸들러를 사용하여 아래와 같이 묶어주고 있습니다.

mHandler.post(new Runnable() {
          public void run() {
          ......
       }
});

하지만 에러는 계속 발생학 있고 감을 못잡고 있는 상황입니다.

AsyncTask Thread는 어디서 생성이 되는지도 잘 모르겠고 (광고나 OpenFeint 등 다른 라이브러리가 생성하는듯 함?) 재현이 안되니 디버깅도 어렵네요.

아래와 같은 Stack Trace에서 확실히 문제되는 점이나 버그를 잡아낼 방법을 집어내주시면 고맙겠습니다__)

Exception class
android.view.ViewRoot$CalledFromWrongThreadException

Source method
ViewRoot.checkThread()



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: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRoot.checkThread(ViewRoot.java:2836)
at android.view.ViewRoot.requestLayout(ViewRoot.java:595)
at android.view.View.requestLayout(View.java:8203)
at android.view.View.requestLayout(View.java:8203)
at android.view.View.requestLayout(View.java:8203)
at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:254)
at android.view.View.requestLayout(View.java:8203)
at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:254)
at android.view.View.requestLayout(View.java:8203)
at android.view.View.setFlags(View.java:4579)
at android.view.View.setVisibility(View.java:3108)
at c.a(Unknown Source)
at c.doInBackground(Unknown Source)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 4 more