android - ANR 错误 --› ANR keyDispatchingTimedOut

标签 android

我在我的开发控制台中收到了 ANR 错误的报告。我是否需要在我的服务中生成一个关闭 onSignalStrengthsChanged 的工作线程来停止长 sql 查询的 ANR?

我也不知道这是否是互斥锁,但我只能通过 ContentProvider 访问我的数据库。

这是长查询的 ANR 还是互斥锁的 ANR?

DALVIK THREADS: (mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0) "main" prio=5 tid=1 NATIVE | group="main" sCount=1 dsCount=0 obj=0x4002a278 self=0xcf50 | sysTid=9149 nice=0 sched=0/0

at android.database.sqlite.SQLiteStatement.native_execute(Native Method) 
at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1582)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426)
at kenyu73.realsignal.DatabaseProvider.insert(DatabaseProvider.java:55)  
at android.content.ContentProvider$Transport.insert(ContentProvider.java:198)
at android.content.ContentResolver.insert(ContentResolver.java:618)  
at kenyu73.realsignal.DatabaseWrapper.insert(DatabaseWrapper.java:189)
at kenyu73.realsignal.SignalStats.updateDbStats(SignalStats.java:154) 
at kenyu73.realsignal.SignalStats.updateSignalStats(SignalStats.java:116)
at kenyu73.realsignal.RealSignalService$2.onSignalStrengthsChanged(RealSignalService.java:156)
at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:329)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)   
at android.app.ActivityThread.main(ActivityThread.java:3695)   
at java.lang.reflect.Method.invokeNative(Native Method)   
at java.lang.reflect.Method.invoke(Method.java:507)   
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)   
at dalvik.system.NativeStart.main(Native Method)

最佳答案

content provider查询默认在ui线程中运行,所以建议创建一个新线程来做查询工作。

另外,互斥锁在尝试获取已锁定的锁时会使用多次,但如果只有一个线程,则可能不需要锁。

关于android - ANR 错误 --› ANR keyDispatchingTimedOut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10038741/

相关文章:

java - 我的应用程序总是崩溃,并且似乎找不到任何错误

java - 将 Java ME 移植到 Android(处理文件)

java - 如何在另一个布局之上添加布局?

android - 如何测量 SpannableString 的高度?

Android 设备在 Ubuntu 12.04 中未在线显示

android - 如果用户向下滚动,TextView 如何永远不会离开屏幕?

android - 取消 Amazon S3 Put 对象请求

android - 如何在 Android 中禁用 WIFI 自动连接

android - 错误 : Error: Integer types not allowed (at 'Dimens' with value '1' )

android - 无法在 Android 上使用 FileDataStoreFactory 为 Youtube Data api v3 创建目录