2012-04-06 15 views
1

Ich habe dies unter einem ANR-Fehler in meiner Dev-Konsole gemeldet. Muss ich in meinem Dienst einen Worker-Thread von onSignalStrengthsChanged spawnen, um ANR für lange SQL-Abfragen zu stoppen?ANR Fehler -> ANR keyDispatchingTimedOut

Ich kann auch nicht sagen, ob dies eine Mutex-Sperre ist, aber ich auf meine db nur über eine ContentProvider zugreifen.

Ist dies ein ANR für eine lange Abfrage oder ein Mutex Lock ANR?

DALVIK THREADS: (mutexes: TLL = 0 TSL = 0 = 0 TsCl GHL = 0 = 0 HWL hwll = 0) "main" PRIO = 5 TID = 1 GEBÜRTIGER | group = "Haupt" 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) 

Antwort

1

die Content-Provider-Abfrage ist standardmäßig in dem UI-Thread ausgeführt werden, so Vorschlag einen neuen Thread, um die Abfrage zu tun.

auch, die mutex lock wenn versuchen, die Sperre zu bekommen, die gesperrt werden wird verwendet werden Zeiten, aber wenn nur ein Thread, das Schloss vielleicht nicht notwendig sein.

Verwandte Themen