2016-03-16 71 views
3

我的應用程序運行在兩個5.0的Android系統。爲什麼Android應用程序在runtimeException後自動重啓?

在我的發展,我有一個未捕獲RuntimeException

當滿足例外,我的應用程序會自動重啓,

我不知道爲什麼我的應用程序自動重啓?即使我打電話System.exit(1)

這是日誌與RuntimException

E/AndroidRuntime(23905): FATAL EXCEPTION: main 
E/AndroidRuntime(23905): Process: com.oosmart.mainapp, PID: 23905 
E/AndroidRuntime(23905): android.database.sqlite.SQLiteException: no such table: devices (code 1): , while compiling: drop table devices 
E/AndroidRuntime(23905): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
E/AndroidRuntime(23905): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
E/AndroidRuntime(23905): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
E/AndroidRuntime(23905): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
E/AndroidRuntime(23905): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
E/AndroidRuntime(23905): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
E/AndroidRuntime(23905): at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674) 
E/AndroidRuntime(23905): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1655) 
E/AndroidRuntime(23905): at com.oosmart.mainaplication.db.DBOperation.execute(DBOperation.java:81) 
E/AndroidRuntime(23905): at com.oosmart.mainaplication.db.DevicesDB.dropTable(DevicesDB.java:154) 
E/AndroidRuntime(23905): at com.oosmart.mainaplication.db.DBHelper.DropTable(DBHelper.java:30) 
E/AndroidRuntime(23905): at com.oosmart.mainaplication.fragment.UserCenterFragment.onExitClick(UserCenterFragment.java:128) 
E/AndroidRuntime(23905): at com.oosmart.mainaplication.fragment.UserCenterFragment$$ViewBinder$6.doClick(UserCenterFragment$$ViewBinder.java:74) 
E/AndroidRuntime(23905): at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22) 
E/AndroidRuntime(23905): at android.view.View.performClick(View.java:4806) 
E/AndroidRuntime(23905): at android.view.View$PerformClick.run(View.java:19952) 
E/AndroidRuntime(23905): at android.os.Handler.handleCallback(Handler.java:739) 
E/AndroidRuntime(23905): at android.os.Handler.dispatchMessage(Handler.java:95) 
E/AndroidRuntime(23905): at android.os.Looper.loop(Looper.java:135) 
E/AndroidRuntime(23905): at android.app.ActivityThread.main(ActivityThread.java:5313) 
E/AndroidRuntime(23905): at java.lang.reflect.Method.invoke(Native Method) 
E/AndroidRuntime(23905): at java.lang.reflect.Method.invoke(Method.java:372) 
E/AndroidRuntime(23905): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1116) 
E/AndroidRuntime(23905): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:809) 

這是日誌與System.exit

I/AndroidRuntime(20479): VM exiting with result code 1, cleanup skipped. 
I/AndroidRuntime(23172): VM exiting with result code 1, cleanup skipped. 
I/Process (24461): java.lang.RuntimeException 

Runtime

更新的grep的日誌: 即使我打電話給android.os.Process.killProcess(android.os.Process.myPid());

該應用程序仍然重新啓動一個新的PID。 我不知道爲什麼我不能完全通過代碼退出。

+1

可能是因爲你沒有完成先前的活動,當新的活動將創建一個例外,它關閉當前的活動,並打開以前。有人糾正我,如果我錯了 –

+0

是的,我還沒有完成前面的活動,但'運行時異常'不會崩潰應用程序?即使我打電話給'Systme.exit()' – user998953

+0

向我們展示一些代碼,然後獲取更多的說明 –

回答

2

可能是因爲你沒有完成先前的活動,當新的活動將創建一個例外,它關閉當前的活動,並打開以前和運行時異常不崩潰的應用程序,您試圖除去甚至不表存在,甚至system.exit()不會退出您的應用程序。最佳實踐是用戶在使用任何複雜的編碼時嘗試捕獲。 有人糾正我,如果我錯了

+0

'System.exit()的'在第一個活動的作品,但我不明白,'運行Exception'不會崩潰的應用程序或崩潰而自動啓動,如果有一個以前的活動 – user998953

1

我所有的應用程序時,它是錯誤,似乎它Android Studio中發生將重新啓動。在調用finish()以退出活動之後,您應該嘗試捕獲SQLiteException以停止崩潰。

+0

謝謝你,我只是困惑,爲什麼我的應用程序不充分退出時,即使我調用'kill pid',也會出現'運行時異常' – user998953

相關問題