首先貼一下trace 文件
Process: com.oppo.reader PID: 20358 Time: 2933175644_1545041895232 Flags: 0x38d83e44 Package: com.oppo.reader v62301 (6.2.3.20181030) PID: 20358 Foreground: Yes Activity: com.oppo.reader/com.zhangyue.iReader.read.ui.Activity_BookBrowser_TXT Subject: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 2. Wait queue head age: 8825.0ms.) Build: OPPO/PBFM00/PBFM00:8.1.0/OPM1.171019.026/1541766248:user/release-keys CPU usage from 0ms to 6451ms later (2018-12-17 18:18:08.726 to 2018-12-17 18:18:15.177): 100% 20358/com.oppo.reader: 97% user + 3.5% kernel / faults: 4111 minor 3 major 39% 1895/system_server: 27% user + 11% kernel / faults: 3126 minor 26 major 0.2% 1167/media.codec: 0.2% user + 0% kernel / faults: 4081 minor 4% 17827/com.android.systemui: 3.2% user + 0.7% kernel / faults: 1640 minor 224 major 3.7% 2835/com.android.phone: 3.2% user + 0.4% kernel / faults: 434 minor 3.4% 687/surfaceflinger: 2.4% user + 0.9% kernel / faults: 454 minor 2.4% 11552/kworker/u16:8: 0% user + 2.4% kernel 0% 1155/media.extractor: 0% user + 0% kernel / faults: 2832 minor 1.2% 654/android.hardware.graphics.composer@2.1-service: 0.7% user + 0.4% kernel / faults: 11 minor 1.2% 17450/com.coloros.floatassistant:float: 1% user + 0.1% kernel / faults: 146 minor 1% 451/logd: 0% user + 1% kernel / faults: 10 minor 0% 3789/com.coloros.appmanager: 0% user + 0% kernel / faults: 270 minor 0.9% 21424/klogd: 0.3% user + 0.6% kernel / faults: 1 minor 0.7% 659/android.hardware.sensors@1.0-service: 0.1% user + 0.6% kernel 0.7% 10558/kworker/u16:0: 0% user + 0.7% kernel 0% 17711/com.oppo.gestureservice: 0% user + 0% kernel / faults: 407 minor 0% 17730/com.color.eyeprotect: 0% user + 0% kernel / faults: 592 minor 0% 17754/com.oppo.resmonitor: 0% user + 0% kernel / faults: 597 minor 5 major 0.7% 21425/xkit_10: 0.7% user + 0% kernel 0.6% 86/kcompactd0: 0% user + 0.6% kernel 0.6% 11551/kworker/u16:7: 0% user + 0.6% kernel 0.6% 21426/xkit_10: 0.3% user + 0.3% kernel / faults: 6 minor 0.4% 329/mmc-cmdqd/0: 0% user + 0.4% kernel 0.4% 424/ueventd: 0.1% user + 0.3% kernel 0.4% 452/servicemanager: 0.3% user + 0.1% kernel 0.4% 14513/irq/280-touchpa: 0% user + 0.4% kernel 0.3% 1//init: 0% user + 0.3% kernel / faults: 19 minor 0.3% 138/kswapd0: 0% user + 0.3% kernel 0.3% 245/kgsl_worker_thr: 0% user + 0.3% kernel 0.3% 3492/neo: 0.3% user + 0% kernel 0.3% 14491/mdss_fb0: 0% user + 0.3% kernel 0.3% 17688/com.coloros.exserviceui: 0.1% user + 0.1% kernel / faults: 9 minor 1 major 0.1% 7/rcu_preempt: 0% user + 0.1% kernel 0.1% 21/rcuop/1: 0% user + 0.1% kernel 0% 423/kworker/0:1H: 0% user + 0% kernel 0.1% 658/android.hardware.power@1.0-service: 0.1% user + 0% kernel 0.1% 740/sensors.qcom: 0.1% user + 0% kernel / faults: 3 minor 0.1% 1030/kworker/10:0: 0% user + 0.1% kernel 0.1% 1134/cameraserver: 0% user + 0.1% kernel / faults: 26 minor 0% 1136/drmserver: 0% user + 0% kernel / faults: 91 minor 3 major 0% 1154/mediadrmserver: 0% user + 0% kernel / faults: 181 minor 59 major 0% 1159/mediaserver: 0% user + 0% kernel / faults: 34 minor 0.1% 1168/rild: 0% user + 0.1% kernel / faults: 2 minor 0% 1170/zygote64: 0% user + 0% kernel / faults: 25 minor 0.1% 1177/zygote: 0% user + 0.1% kernel / faults: 16 minor 0% 1223/tombstoned: 0% user + 0% kernel 0.1% 1261/imsdatadaemon: 0% user + 0.1% kernel 0.1% 1330/rild: 0.1% user + 0% kernel 0.1% 12333/com.tencent.mobileqq:MSF: 0.1% user + 0% kernel / faults: 45 minor 99 major 0.1% 12352/com.tencent.mobileqq: 0% user + 0.1% kernel / faults: 45 minor 113 major 0.1% 13204/com.tencent.mm: 0.1% user + 0% kernel / faults: 22 minor 69 major 0.1% 13717/com.tencent.mm:tools: 0.1% user + 0% kernel / faults: 179 minor 322 major 0.1% 14509/logcat: 0.1% user + 0% kernel 0.1% 14782/kworker/3:3: 0% user + 0.1% kernel 0.1% 19348/com.android.browser: 0.1% user + 0% kernel / faults: 77 minor 129 major 0.1% 19469/logcat: 0% user + 0.1% kernel 0.1% 19738/kworker/1:2: 0% user + 0.1% kernel 0.1% 20519/kworker/2:3: 0% user + 0.1% kernel 0.1% 20821/kworker/0:1: 0% user + 0.1% kernel 0.1% 20849/diag_mdlog: 0% user + 0.1% kernel 0.1% 21334/cat: 0% user + 0.1% kernel 0.1% 21428/logcat: 0% user + 0.1% kernel 26% TOTAL: 20% user + 4.6% kernel + 0.5% iowait + 0.3% irq + 0.1% softirq ----- pid 20358 at 2018-12-17 18:18:09 ----- Cmd line: com.oppo.reader Build fingerprint: 'OPPO/PBFM00/PBFM00:8.1.0/OPM1.171019.026/1541766248:user/release-keys' ABI: 'arm' Build type: optimized Zygote loaded classes=5110 post zygote classes=3166 Intern table: 52731 strong; 145 weak JNI: CheckJNI is off; globals=727 (plus 79 weak) Libraries: /data/app/com.oppo.reader-NTuEuWlogpCo1aD9HtyDhQ==/lib/arm/libUiControl.so /data/app/com.oppo.reader-NTuEuWlogpCo1aD9HtyDhQ==/lib/arm/libtingReader.so /system/app/WebViewGoogleNX/WebViewGoogleNX.apk!/lib/armeabi-v7a/libwebviewchromium.so /system/lib/libandroid.so /system/lib/libcompiler_rt.so /system/lib/libjavacrypto.so /system/lib/libjnigraphics.so /system/lib/libmedia_jni.so /system/lib/libqti_performance.so /system/lib/libsoundpool.so /system/lib/libwebviewchromium_loader.so /system/lib/libwebviewchromium_plat_support.so libjavacore.so libopenjdk.so (14) Heap: 24% free, 16MB/22MB; 262809 objects Dumping cumulative Gc timings Start Dumping histograms for 8 iterations for concurrent copying ProcessMarkStack: Sum: 430.463ms 99% C.I. 12.291ms-126.080ms Avg: 53.807ms Max: 127.672ms ScanImmuneSpaces: Sum: 94.022ms 99% C.I. 8.543ms-24.656ms Avg: 11.752ms Max: 25.146ms VisitConcurrentRoots: Sum: 44.525ms 99% C.I. 4.612ms-8.508ms Avg: 5.565ms Max: 8.527ms SweepLargeObjects: Sum: 26.256ms 99% C.I. 1.062ms-8.484ms Avg: 3.282ms Max: 8.507ms ClearFromSpace: Sum: 13.381ms 99% C.I. 0.359ms-3.134ms Avg: 1.672ms Max: 3.145ms GrayAllDirtyImmuneObjects: Sum: 11.950ms 99% C.I. 0.352ms-8.112ms Avg: 1.493ms Max: 8.351ms FlipOtherThreads: Sum: 10.679ms 99% C.I. 0.956ms-2.934ms Avg: 1.334ms Max: 2.969ms MarkZygoteLargeObjects: Sum: 7.665ms 99% C.I. 45us-6824us Avg: 958.125us Max: 7023us EnqueueFinalizerReferences: Sum: 5.876ms 99% C.I. 95us-2168us Avg: 734.500us Max: 2168us ProcessReferences: Sum: 5.800ms 99% C.I. 4us-1463us Avg: 362.500us Max: 1463us InitializePhase: Sum: 5.308ms 99% C.I. 220us-3006us Avg: 663.500us Max: 3061us ForwardSoftReferences: Sum: 4.183ms 99% C.I. 14us-800us Avg: 522.875us Max: 800us SweepSystemWeaks: Sum: 4.176ms 99% C.I. 306us-1172us Avg: 522us Max: 1190us RecordFree: Sum: 1.808ms 99% C.I. 145us-671us Avg: 226us Max: 671us VisitNonThreadRoots: Sum: 1.565ms 99% C.I. 154us-286us Avg: 195.625us Max: 286us MarkingPhase: Sum: 1.317ms 99% C.I. 32us-916us Avg: 164.625us Max: 948us ThreadListFlip: Sum: 781us 99% C.I. 57us-239us Avg: 97.625us Max: 239us EmptyRBMarkBitStack: Sum: 727us 99% C.I. 13us-282us Avg: 90.875us Max: 282us MarkStackAsLive: Sum: 433us 99% C.I. 37us-73us Avg: 54.125us Max: 73us (Paused)GrayAllNewlyDirtyImmuneObjects: Sum: 430us 99% C.I. 39us-124us Avg: 53.750us Max: 124us ReclaimPhase: Sum: 241us 99% C.I. 17us-78us Avg: 30.125us Max: 78us ResumeOtherThreads: Sum: 232us 99% C.I. 6us-145us Avg: 29us Max: 145us ResumeRunnableThreads: Sum: 215us 99% C.I. 13us-50us Avg: 26.875us Max: 50us ClearRegionSpaceCards: Sum: 198us 99% C.I. 10us-61us Avg: 24.750us Max: 61us SweepAllocSpace: Sum: 147us 99% C.I. 6us-32us Avg: 18.375us Max: 32us SwapBitmaps: Sum: 124us 99% C.I. 11us-20us Avg: 15.500us Max: 20us (Paused)SetFromSpace: Sum: 105us 99% C.I. 3us-42us Avg: 13.125us Max: 42us (Paused)ClearCards: Sum: 79us 99% C.I. 250ns-7000ns Avg: 395ns Max: 7000ns Sweep: Sum: 71us 99% C.I. 6us-11us Avg: 8.875us Max: 11us (Paused)FlipCallback: Sum: 57us 99% C.I. 4us-19us Avg: 7.125us Max: 19us FlipThreadRoots: Sum: 35us 99% C.I. 3us-9us Avg: 4.375us Max: 9us UnBindBitmaps: Sum: 16us 99% C.I. 2us-2us Avg: 2us Max: 2us Done Dumping histograms concurrent copying paused: Sum: 1.499ms 99% C.I. 133us-458us Avg: 187.375us Max: 458us concurrent copying total time: 672.865ms mean time: 84.108ms concurrent copying freed: 558166 objects with total size 84MB concurrent copying throughput: 830604/s / 125MB/s Cumulative bytes moved 12844720 Cumulative objects moved 272799 Total time spent in GC: 672.865ms Mean GC size throughput: 65MB/s Mean GC object throughput: 827833 objects/s Total number of allocations 819829 Total bytes allocated 60MB Total bytes freed 44MB Free memory 5MB Free memory until GC 5MB Free memory until OOME 495MB Total memory 22MB Max memory 512MB Zygote space size 780KB Total mutator paused time: 1.499ms Total time waiting for GC to complete: 34.535us Total GC count: 8 Total GC time: 672.865ms Total blocking GC count: 0 Total blocking GC time: 0 Histogram of GC count per 10000 ms: 0:8,1:3,4:1 Histogram of blocking GC count per 10000 ms: 0:12 Registered native bytes allocated: 23662650 /data/app/com.oppo.reader-NTuEuWlogpCo1aD9HtyDhQ==/oat/arm/base.odex: quicken /system/app/WebViewGoogleNX/oat/arm/WebViewGoogleNX.odex: quicken /data/app/com.oppo.reader-NTuEuWlogpCo1aD9HtyDhQ==/oat/arm/base.odex: quicken Current JIT code cache size: 144KB Current JIT data cache size: 107KB Current JIT capacity: 512KB Current number of JIT code cache entries: 124 Total number of JIT compilations: 147 Total number of JIT compilations for on stack replacement: 4 Total number of JIT code cache collections: 4 Memory used for stack maps: Avg: 565B Max: 6KB Min: 24B Memory used for compiled code: Avg: 1277B Max: 9KB Min: 2B Memory used for profiling info: Avg: 268B Max: 3KB Min: 16B Start Dumping histograms for 151 iterations for JIT timings Compiling: Sum: 873.725ms 99% C.I. 0.149ms-48.568ms Avg: 5.943ms Max: 56.411ms TrimMaps: Sum: 12.710ms 99% C.I. 8us-689.750us Avg: 86.462us Max: 772us Code cache collection: Sum: 5.165ms 99% C.I. 0.877ms-2.372ms Avg: 1.291ms Max: 2.395ms Done Dumping histograms Memory used for compilation: Avg: 231KB Max: 2MB Min: 15KB ProfileSaver total_bytes_written=0 ProfileSaver total_number_of_writes=0 ProfileSaver total_number_of_code_cache_queries=2 ProfileSaver total_number_of_skipped_writes=2 ProfileSaver total_number_of_failed_writes=0 ProfileSaver total_ms_of_sleep=101716 ProfileSaver total_ms_of_work=60 ProfileSaver max_number_profile_entries_cached=0 ProfileSaver total_number_of_hot_spikes=2 ProfileSaver total_number_of_wake_ups=4 Number of JIT inline cache deoptimizations: 2 suspend all histogram: Sum: 1.234ms 99% C.I. 9us-160.399us Avg: 31.641us Max: 169us DALVIK THREADS (70): "Signal Catcher" daemon prio=5 tid=3 Runnable | group="system" sCount=0 dsCount=0 flags=0 obj=0x13500280 self=0xe6c0fc00 | sysTid=20364 nice=0 cgrp=default sched=0/0 handle=0xdcbfe970 | state=R schedstat=( 27239057 2910573 19 ) utm=2 stm=0 core=0 HZ=100 | stack=0xdcb04000-0xdcb06000 stackSize=1006KB | held mutexes= "mutator lock"(shared held) native: #00 pc 002e8b57 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*)+130) native: #01 pc 0037b7f9 /system/lib/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+204) native: #02 pc 00377d2b /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+34) native: #03 pc 0038f8fb /system/lib/libart.so (art::DumpCheckpoint::Run(art::Thread*)+698) native: #04 pc 0038947d /system/lib/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+320) native: #05 pc 00388f7b /system/lib/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool)+530) native: #06 pc 00388c9b /system/lib/libart.so (art::ThreadList::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits<char>>&)+626) native: #07 pc 003652d3 /system/lib/libart.so (art::Runtime::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits<char>>&)+122) native: #08 pc 0036d9b3 /system/lib/libart.so (art::SignalCatcher::HandleSigQuit()+1282) native: #09 pc 0036c91b /system/lib/libart.so (art::SignalCatcher::Run(void*)+330) native: #10 pc 000473f3 /system/lib/libc.so (__pthread_start(void*)+22) native: #11 pc 0001afb1 /system/lib/libc.so (__start_thread+32) (no managed stack frames) "main" prio=5 tid=1 Blocked | group="main" sCount=1 dsCount=0 flags=1 obj=0x71ebca68 self=0xe6c0f000 | sysTid=20358 nice=-10 cgrp=default sched=0/0 handle=0xea9254a4 | state=S schedstat=( 2882074832 469149273 2373 ) utm=241 stm=47 core=1 HZ=100 | stack=0xff789000-0xff78b000 stackSize=8MB | held mutexes= at com.zhangyue.iReader.DB.DBAdapter.execSQL(SourceFile:2512) - waiting to lock <0x08d75003> (a com.zhangyue.iReader.DB.DBAdapter) held by thread 66 at com.zhangyue.iReader.DB.DBAdapter.queryBookIDWithoutPath(SourceFile:1497) at com.zhangyue.iReader.read.ui.BookBrowserFragment.u(SourceFile:1223) at com.zhangyue.iReader.read.ui.BookBrowserFragment.U(SourceFile:368) at com.zhangyue.iReader.read.ui.cc.run(SourceFile:3098) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:198) at android.app.ActivityThread.main(ActivityThread.java:7038) at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:519) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:836) "Jit thread pool worker thread 0" daemon prio=5 tid=2 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x135001f8 self=0xdcd1f000 | sysTid=20363 nice=9 cgrp=default sched=0/0 handle=0xdccff970 | state=S schedstat=( 803558025 113797923 579 ) utm=76 stm=4 core=6 HZ=100 | stack=0xdcc01000-0xdcc03000 stackSize=1022KB | held mutexes= kernel: (couldn't read /proc/self/task/20363/stack) native: #00 pc 00018e20 /system/lib/libc.so (syscall+28) native: #01 pc 000b79d1 /system/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+80) native: #02 pc 00390b81 /system/lib/libart.so (art::ThreadPool::GetTask(art::Thread*)+172) native: #03 pc 003904f7 /system/lib/libart.so (art::ThreadPoolWorker::Run()+62) native: #04 pc 00390115 /system/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+92) native: #05 pc 000473f3 /system/lib/libc.so (__pthread_start(void*)+22) native: #06 pc 0001afb1 /system/lib/libc.so (__start_thread+32) (no managed stack frames) "ReferenceQueueDaemon" daemon prio=5 tid=4 Waiting | group="system" sCount=1 dsCount=0 flags=1 obj=0x13500308 self=0xdca14600 | sysTid=20365 nice=4 cgrp=default sched=0/0 handle=0xc9e29970 | state=S schedstat=( 34968799 11582865 55 ) utm=2 stm=1 core=4 HZ=100 | stack=0xc9d27000-0xc9d29000 stackSize=1038KB | held mutexes= at java.lang.Object.wait(Native method) - waiting on <0x03602b80> (a java.lang.Class<java.lang.ref.ReferenceQueue>) at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:183) - locked <0x03602b80> (a java.lang.Class<java.lang.ref.ReferenceQueue>) at java.lang.Daemons$Daemon.run(Daemons.java:108) at java.lang.Thread.run(Thread.java:764) "OkHttp https://icloud.zhangyue.com/..." prio=5 tid=66 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x133c0a30 self=0xc4ca9200 | sysTid=21822 nice=0 cgrp=default sched=0/0 handle=0xbe396970 | state=S schedstat=( 14565089915 55131141 764 ) utm=1423 stm=33 core=2 HZ=100 | stack=0xbe294000-0xbe296000 stackSize=1038KB | held mutexes= kernel: (couldn't read /proc/self/task/21822/stack) native: #00 pc 00018e20 /system/lib/libc.so (syscall+28) native: #01 pc 000b79d1 /system/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+80) native: #02 pc 003e2949 /system/lib/libart.so (art::GoToRunnable(art::Thread*)+300) native: #03 pc 003e27ed /system/lib/libart.so (art::JniMethodEnd(unsigned int, art::Thread*)+8) native: #04 pc 00404d45 /system/framework/arm/boot-framework.oat (Java_android_database_sqlite_SQLiteConnection_nativeExecuteForChangedRowCount__JJ+132) at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native method) at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:748) at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754) at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64) at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1658) at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1604) at com.zhangyue.iReader.DB.a.update(SourceFile:129) at com.zhangyue.iReader.DB.DBAdapter.update(SourceFile:4224) at dt.d.b(SourceFile:112) at com.zhangyue.iReader.DB.DBAdapter.updateHighLightByPostion(SourceFile:1657) at df.t.b(SourceFile:269) - locked <0x08d75003> (a com.zhangyue.iReader.DB.DBAdapter) at df.t.a(SourceFile:66) at df.al.a(SourceFile:118) at df.am.onHttpEvent(SourceFile:88) at com.zhangyue.net.p$b.onHttpEvent(SourceFile:138) at com.zhangyue.net.a.a(SourceFile:796) at com.zhangyue.net.a.a(SourceFile:63) at com.zhangyue.net.c.onResponse(SourceFile:698) at okhttp3.RealCall$AsyncCall.execute(SourceFile:153) at okhttp3.internal.NamedRunnable.run(SourceFile:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764)
開頭會告訴你,是哪一個包ANR 了。因此,之後搜索ANR 能夠在log 裏面搜索:java
Cmd line: com.oppo.reader
後面替換成你的包名。android
第一步:查看主線程
"main" prio=5 tid=1 Blocked | group="main" sCount=1 dsCount=0 flags=1 obj=0x71ebca68 self=0xe6c0f000 | sysTid=20358 nice=-10 cgrp=default sched=0/0 handle=0xea9254a4 | state=S schedstat=( 2882074832 469149273 2373 ) utm=241 stm=47 core=1 HZ=100 | stack=0xff789000-0xff78b000 stackSize=8MB | held mutexes= at com.zhangyue.iReader.DB.DBAdapter.execSQL(SourceFile:2512) - waiting to lock <0x08d75003> (a com.zhangyue.iReader.DB.DBAdapter) held by thread 66 at com.zhangyue.iReader.DB.DBAdapter.queryBookIDWithoutPath(SourceFile:1497) at com.zhangyue.iReader.read.ui.BookBrowserFragment.u(SourceFile:1223) at com.zhangyue.iReader.read.ui.BookBrowserFragment.U(SourceFile:368) at com.zhangyue.iReader.read.ui.cc.run(SourceFile:3098) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:198) at android.app.ActivityThread.main(ActivityThread.java:7038) at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:519) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:836)
- waiting to lock <0x08d75003> (a com.zhangyue.iReader.DB.DBAdapter) held by thread 66
他說,在等待一個鎖,0x08d75003。 你能夠在trace 裏面搜索這個字符,或者後面說,held by thread 66,那就搜索線程66web
tid=66
第二步:找到線程66
"OkHttp https://icloud.zhangyue.com/..." prio=5 tid=66 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x133c0a30 self=0xc4ca9200 | sysTid=21822 nice=0 cgrp=default sched=0/0 handle=0xbe396970 | state=S schedstat=( 14565089915 55131141 764 ) utm=1423 stm=33 core=2 HZ=100 | stack=0xbe294000-0xbe296000 stackSize=1038KB | held mutexes= kernel: (couldn't read /proc/self/task/21822/stack) native: #00 pc 00018e20 /system/lib/libc.so (syscall+28) native: #01 pc 000b79d1 /system/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+80) native: #02 pc 003e2949 /system/lib/libart.so (art::GoToRunnable(art::Thread*)+300) native: #03 pc 003e27ed /system/lib/libart.so (art::JniMethodEnd(unsigned int, art::Thread*)+8) native: #04 pc 00404d45 /system/framework/arm/boot-framework.oat (Java_android_database_sqlite_SQLiteConnection_nativeExecuteForChangedRowCount__JJ+132) at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native method) at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:748) at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754) at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64) at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1658) at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1604) at com.zhangyue.iReader.DB.a.update(SourceFile:129) at com.zhangyue.iReader.DB.DBAdapter.update(SourceFile:4224) at dt.d.b(SourceFile:112) at com.zhangyue.iReader.DB.DBAdapter.updateHighLightByPostion(SourceFile:1657) at df.t.b(SourceFile:269) - locked <0x08d75003> (a com.zhangyue.iReader.DB.DBAdapter) at df.t.a(SourceFile:66) at df.al.a(SourceFile:118) at df.am.onHttpEvent(SourceFile:88) at com.zhangyue.net.p$b.onHttpEvent(SourceFile:138) at com.zhangyue.net.a.a(SourceFile:796) at com.zhangyue.net.a.a(SourceFile:63) at com.zhangyue.net.c.onResponse(SourceFile:698) at okhttp3.RealCall$AsyncCall.execute(SourceFile:153) at okhttp3.internal.NamedRunnable.run(SourceFile:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764)
問下了同事, - locked <0x08d75003> (a com.zhangyue.iReader.DB.DBAdapter) 表示,從這行的堆棧開始,進入synchronized 代碼塊。(至因而不是,能夠本身去獲取堆棧,嘗試下。)
那麼,也就是在這裏,子線程執行代碼,佔用了 - locked <0x08d75003> (a com.zhangyue.iReader.DB.DBAdapter)這個鎖。sql
第三步:處理
怎麼處理呢?app
- 把沒有用的鎖,去掉。程序裏面不要隨意的加鎖
- 咱們這裏是由於一大坨代碼,都寫在了執行事務裏,致使,執行事務的時候,佔用了SQLite 連接。致使主線程拿不到SQLite 的鎖。
其餘技巧
1.若是你以爲是某一塊代碼執行時間過長致使ANR,那麼能夠把這一塊代碼換成下面這個,看看會不會ANR.composer
long begin = System.currentTimeMillis(); while(System.currentTimeMillis() - begin < 1000 * 60 * 10){ a = 50; DBAdapter.getInstance().queryALLBook(); }
上面這塊代碼,會執行10分鐘。裏面不停的執行SQL 操做。oop