1
我剛剛收到一個奇怪的ANR報告,看着涉及的3個線程,就像是transact()方法阻塞了UI!有人可以確認嗎?android.os.Binder.transact()可以阻止UI
可能誤導但TID 23,行〜887實際上是這樣的方法:
synchronized public void doSomething()
{
// No sync in here, no API calls either
}
這究竟是爲什麼?虛假報道? OS錯誤?應用錯誤?我將來如何避免這種情況?
只是要清楚:主線程是響應後退按鈕,在android.app.Activity.finish()但被tid = 21阻止,tid = 21是調用getApplicationInfo() - > transact )
這裏所涉及的3個線程的堆棧跟蹤:
"main" prio=5 tid=1 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x40aed9a0 self=0x1772cb0
| sysTid=30378 nice=0 sched=0/0 cgrp=apps handle=1074254812
| state=S schedstat=(0 0 0) utm=537 stm=93 core=1
at android.app.Activity.finish(Activity.java:~4138)
- waiting to lock <0x40fa7008> (a my.app.package.activities.tm.at_process_tabs) held by tid=21 (AsyncTask #3)
at android.support.v4.app.FragmentActivity.onBackPressed(SourceFile:175)
at android.app.Activity.onKeyUp(Activity.java:2145)
at android.view.KeyEvent.dispatch(KeyEvent.java:2633)
"AsyncTask #4" prio=5 tid=23 MONITOR
| group="main" sCount=1 dsCount=0 obj=0x41364a68 self=0x1ca4ec0
| sysTid=30749 nice=-1 sched=0/0 cgrp=apps handle=28938832
| state=S schedstat=(0 0 0) utm=0 stm=0 core=1
at my.app.package.activities.tm.at_process_tabs.a(SourceFile:~887)
- waiting to lock <0x40fa7008> (a my.app.package.activities.tm.at_process_tabs) held by tid=21 (AsyncTask #3)
at my.app.package.activities.tm.x.a(SourceFile:95)
at my.app.package.activities.tm.x.b(SourceFile:1)
at my.app.package.utils.android.d.call(SourceFile:203)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)
"AsyncTask #3" prio=5 tid=21 SUSPENDED
| group="main" sCount=1 dsCount=0 obj=0x41327370 self=0x1b982a0
| sysTid=30747 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=34484768
| state=S schedstat=(0 0 0) utm=47 stm=5 core=0
at android.os.BinderProxy.transact(Native Method)
at android.content.pm.IPackageManager$Stub$Proxy.getApplicationInfo(IPackageManager.j...