장치가 부팅 될 때 활성화되는 Android 서비스가 있습니다. 앱이 활성화되거나 로그 아웃 될 때 제대로 작동하지만 앱을 강제 종료하면 예외가 발생하고 서비스가 데이터베이스에 액세스하려고 시도하고 sqllite를 던집니다. database locked exception. 오류 로그는 아래와 같습니다 .DBHandler는 데이터베이스 트랜잭션을 만드는 데 사용되는 클래스이고 NotificationService는 서비스 클래스입니다.
getConfigData () 메서드에는 앱이 닫힐 때 null이되는 컨텍스트가 필요합니다.이 문제를 해결할 방법이 있습니까?
08-28 11:48:05.897: E/AndroidRuntime(5839): FATAL EXCEPTION: main
08-28 11:48:05.897: E/AndroidRuntime(5839): java.lang.RuntimeException: Unable to start service com.cwep.sync.NotificationService@414b4690 with null: java.lang.StringIndexOutOfBoundsException: length=0; index=0
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2655)
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.app.ActivityThread.access$1900(ActivityThread.java:149)
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.os.Handler.dispatchMessage(Handler.java:99)
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.os.Looper.loop(Looper.java:153)
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.app.ActivityThread.main(ActivityThread.java:4987)
08-28 11:48:05.897: E/AndroidRuntime(5839): at java.lang.reflect.Method.invokeNative(Native Method)
08-28 11:48:05.897: E/AndroidRuntime(5839): at java.lang.reflect.Method.invoke(Method.java:511)
08-28 11:48:05.897: E/AndroidRuntime(5839): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
08-28 11:48:05.897: E/AndroidRuntime(5839): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
08-28 11:48:05.897: E/AndroidRuntime(5839): at dalvik.system.NativeStart.main(Native Method)
08-28 11:48:05.897: E/AndroidRuntime(5839): Caused by: java.lang.StringIndexOutOfBoundsException: length=0; index=0
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.app.ContextImpl.validateFilePath(ContextImpl.java:1705)
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:855)
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
08-28 11:48:05.897: E/AndroidRuntime(5839): at com.cwep.dbhandler.DBHandler.getWritableDatabase(DBHandler.java:2756)
08-28 11:48:05.897: E/AndroidRuntime(5839): at com.cwep.dbhandler.DBHandler.getConfigData(DBHandler.java:488)
08-28 11:48:05.897: E/AndroidRuntime(5839): at com.cwep.sync.NotificationService.onStartCommand(NotificationService.java:58)
08-28 11:48:05.897: E/AndroidRuntime(5839): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2638)
08-28 11:48:05.897: E/AndroidRuntime(5839): ... 10 more
생성자에 ""
데이터베이스 이름으로 빈 문자열을 전달한 것 같습니다 SQLiteOpenHelper
. 파일 이름으로 유효한 비어 있지 않은 이름 또는 null
메모리 내 데이터베이스의 경우 (빈 문자열이 아님)을 전달해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다