SORU
1 NİSAN 2009, ÇARŞAMBA


Android - nasıl bir ANR araştırmak mı?

Benim app bir ANR (Uygulama Yanıt vermiyor) attı bulmak için bir yolu yoktur. /Veri traces.txt dosyasına bir göz attım ve benim uygulama için bir iz görüyorum. Bu izleme görüyorum.

DALVIK THREADS:
"main" prio=5 tid=3 TIMED_WAIT
  | group="main" sCount=1 dsCount=0 s=0 obj=0x400143a8
  | sysTid=691 nice=0 sched=0/0 handle=-1091117924
  at java.lang.Object.wait(Native Method)
  - waiting on <0x1cd570> (a android.os.MessageQueue)
  at java.lang.Object.wait(Object.java:195)
  at android.os.MessageQueue.next(MessageQueue.java:144)
  at android.os.Looper.loop(Looper.java:110)
  at android.app.ActivityThread.main(ActivityThread.java:3742)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:515)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:497)
  at dalvik.system.NativeStart.main(Native Method)

"Binder Thread #3" prio=5 tid=15 NATIVE
  | group="main" sCount=1 dsCount=0 s=0 obj=0x434e7758
  | sysTid=734 nice=0 sched=0/0 handle=1733632
  at dalvik.system.NativeStart.run(Native Method)

"Binder Thread #2" prio=5 tid=13 NATIVE
  | group="main" sCount=1 dsCount=0 s=0 obj=0x433af808
  | sysTid=696 nice=0 sched=0/0 handle=1369840
  at dalvik.system.NativeStart.run(Native Method)

"Binder Thread #1" prio=5 tid=11 NATIVE
  | group="main" sCount=1 dsCount=0 s=0 obj=0x433aca10
  | sysTid=695 nice=0 sched=0/0 handle=1367448
  at dalvik.system.NativeStart.run(Native Method)

"JDWP" daemon prio=5 tid=9 VMWAIT
  | group="system" sCount=1 dsCount=0 s=0 obj=0x433ac2a0
  | sysTid=694 nice=0 sched=0/0 handle=1367136
  at dalvik.system.NativeStart.run(Native Method)

"Signal Catcher" daemon prio=5 tid=7 RUNNABLE
  | group="system" sCount=0 dsCount=0 s=0 obj=0x433ac1e8
  | sysTid=693 nice=0 sched=0/0 handle=1366712
  at dalvik.system.NativeStart.run(Native Method)

"HeapWorker" daemon prio=5 tid=5 VMWAIT
  | group="system" sCount=1 dsCount=0 s=0 obj=0x4253ef88
  | sysTid=692 nice=0 sched=0/0 handle=1366472
  at dalvik.system.NativeStart.run(Native Method)

----- end 691 -----

Nasıl sorun nerede bulabilirim? İzleme yöntemleri tüm SDK yöntemleri vardır.

Teşekkürler.

CEVAP
1 NİSAN 2009, ÇARŞAMBA


Bir ANR biraz uzun işlem "" parçacığı. ana meydana gelirse, o zaman olur Bu olay döngü iplik ve eğer meşgulse, Android edemiyor uygulamada daha ileri GUI olaylarını işlemek ve böylece ANR bir iletişim kutusu görüntüler.

Şimdi, izleme yayınlanmıştır, ana iş parçacığı gayet iyi görünüyor, sorun yok. Bu MessageQueue, başka bir mesaj gelmesini bekliyor boşta. Senin durumunda ANR olay iş parçacığı işlemi bitmiş ve izleme yoluyla ANR sonra gitti sonra iyileşti çok büyük olasılıkla daha uzun bir işlem, yerine kalıcı olarak iplik engelleyen bir şey vardı.

ANRs ortaya çıktığı tespit eğer kalıcı bir blok (kilitlenme örneğin bazı kilit alma) eğer sadece geçici bir gecikme var, ama zor ise kolay. İlk kodunuzu gidip sağlık sorunları yaş duyarlı noktalar ve uzun süren işlemleri için bak. Örnekler yuva, kilitler, iplik uyur, ve diğer engelleme işlemleri kullanarak olay içinde parçacığı içerebilir. Bu ayrı bir iş parçacığı başına emin olun. Eğer sorun görünüyorsa, DDMS kullanımı ve iş parçacığı görünümü etkinleştir. Bu uygulama tüm konuları var izleme benzerlik göstermektedir. ANR yeniden oluşturmak ve aynı zamanda ana iş parçacığı yenileyin. Bu tam ANR zaman neler oluyor göstermelidir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 365multimedia

    365multimedi

    26 ŞUBAT 2009
  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • Rugiagialia

    Rugiagialia

    1 Ocak 2008