1

アプリのクラッシュを追跡するために Crittercism を使用しています。どう対処したらいいのかわからないものに遭遇しました。

それが Crittersim ログです。

クラッシュしたスレッド

0   
java.lang.IllegalArgumentException: View not attached to window manager
1   
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:656)
2   
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:349)
3   
at android.view.WindowManagerImpl$CompatModeWrapper.removeView(WindowManagerImpl.java:160)
4   
at android.widget.ZoomButtonsController.setVisible(ZoomButtonsController.java:407)
5   
at android.widget.ZoomButtonsController$2.handleMessage(ZoomButtonsController.java:179)
6   
at android.os.Handler.dispatchMessage(Handler.java:99)
7   
at android.os.Looper.loop(Looper.java:137)
8   
at android.app.ActivityThread.main(ActivityThread.java:5059)
9   
at java.lang.reflect.Method.invokeNative(Native Method)
10  
at java.lang.reflect.Method.invoke(Method.java:511)
11  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
12  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
13  
at dalvik.system.NativeStart.main(Native Method)
27 other threads

スレッド: AsyncTask #4 (id=721、状態=WAITING)

0   
java.lang.Object.wait(Native Method)
1   
java.lang.Thread.parkFor(Thread.java:1231)
2   
sun.misc.Unsafe.park(Unsafe.java:323)
3   
java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4   
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5   
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6   
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
7   
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
8   
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
9   
java.lang.Thread.run(Thread.java:856)

スレッド: ImageContentLoader_Cache (id=709、状態=RUNNABLE)

0   
android.os.MessageQueue.nativePollOnce(Native Method)
1   
android.os.MessageQueue.next(MessageQueue.java:125)
2   
android.os.Looper.loop(Looper.java:124)
3   
android.os.HandlerThread.run(HandlerThread.java:60)

スレッド: pool-4-thread-1 (id=695、状態=WAITING)

0   
java.lang.Object.wait(Native Method)
1   
java.lang.Thread.parkFor(Thread.java:1231)
2   
sun.misc.Unsafe.park(Unsafe.java:323)
3   
java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4   
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5   
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6   
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
7   
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
8   
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
9   
java.lang.Thread.run(Thread.java:856)

スレッド: ワーカー スレッドの要求 (id=707、状態=RUNNABLE)

0   
android.os.MessageQueue.nativePollOnce(Native Method)
1   
android.os.MessageQueue.next(MessageQueue.java:125)
2   
android.os.Looper.loop(Looper.java:124)
3   
com.[XXXXXXX].android.services.ServerTalk.run(ServerTalk.java:2043)
4   
java.lang.Thread.run(Thread.java:856)

私のアプリへの参照は1つだけです:

com.[XXXXXXX].android.services.ServerTalk.run(ServerTalk.java:2043)

この行につながる:

@Override
public void run()
{
    Looper.prepare();
    synchronized (this)
    {
        if (mCanRunLooper)
        {
            mLooper = Looper.myLooper();
            mRequestHandler = new RequestThreadHandler();
        }
        else
        {
            return;
        }
    }
    mEvent.open();
    Looper.loop();  <----- [HERE]

}

この ServerTalk は、Web 要求を処理するサービスであり、さまざまなアクティビティによって呼び出されています。問題は、アクティビティがここにリストされておらず、実際に私のアプリが実際にクラッシュしたスレッドにリストされていないことです。このクラッシュは複数回発生しましたが、自分で再現することはできません。これが何かわかりません。何か案は?

4

1 に答える 1

0

「ウィンドウ マネージャーに関連付けられていないビュー」は、階層内のアクティブなビューではないことを意味します。スタックの少し先に「ZoomButtonsController.setVisible」があります。

あなたは、ServerTalk はサービスだと言います。ビューでメソッドを呼び出そうとしているのはなぜですか? サービスは UI を持つことができません。

于 2013-05-06T16:50:58.047 に答える