Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Android应用程序在运行时异常后自动重启?_Java_Android_Runtime Error - Fatal编程技术网

Java 为什么Android应用程序在运行时异常后自动重启?

Java 为什么Android应用程序在运行时异常后自动重启?,java,android,runtime-error,Java,Android,Runtime Error,我的应用程序运行在两个5.0安卓系统中 在我的开发中,我有一个未捕获的RuntimeException 遇到异常时,我的应用程序将自动重新启动 我不知道为什么我的应用程序会自动重启?即使我调用System.exit(1) 这是带有RuntimeException的日志 E/AndroidRuntime(23905):致命异常:主 E/AndroidRuntime(23905):进程:com.oosmart.mainapp,PID:23905 E/AndroidRuntime(23905):and

我的应用程序运行在两个5.0安卓系统中

在我的开发中,我有一个未捕获的
RuntimeException

遇到异常时,我的应用程序将自动重新启动

我不知道为什么我的应用程序会自动重启?即使我调用
System.exit(1)

这是带有RuntimeException的日志

E/AndroidRuntime(23905):致命异常:主
E/AndroidRuntime(23905):进程:com.oosmart.mainapp,PID:23905
E/AndroidRuntime(23905):android.database.sqlite.SQLiteException:没有这样的表:设备(代码1):,编译时:删除表设备
E/AndroidRuntime(23905):位于android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
E/AndroidRuntime(23905):位于android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
E/AndroidRuntime(23905):位于android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
E/AndroidRuntime(23905):位于android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
E/AndroidRuntime(23905):位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
E/AndroidRuntime(23905):位于android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
E/AndroidRuntime(23905):位于android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674)
E/AndroidRuntime(23905):位于android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1655)
E/AndroidRuntime(23905):位于com.oosmart.mainaplication.db.DBOperation.execute(DBOperation.java:81)
E/AndroidRuntime(23905):位于com.oosmart.mainaplication.db.DevicesDB.dropTable(DevicesDB.java:154)
E/AndroidRuntime(23905):位于com.oosmart.mainaplication.db.DBHelper.DropTable(DBHelper.java:30)
E/AndroidRuntime(23905):位于com.oosmart.mainaplication.fragment.UserCenterFragment.onExitClick(UserCenterFragment.java:128)
E/AndroidRuntime(23905):位于com.oosmart.mainaplication.fragment.UserCenterFragment$$ViewBinder$6.doClick(UserCenterFragment$$ViewBinder.java:74)
E/AndroidRuntime(23905):在butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
E/AndroidRuntime(23905):在android.view.view.performClick(view.java:4806)上
E/AndroidRuntime(23905):在android.view.view$PerformClick.run(view.java:19952)
E/AndroidRuntime(23905):位于android.os.Handler.handleCallback(Handler.java:739)
E/AndroidRuntime(23905):位于android.os.Handler.dispatchMessage(Handler.java:95)
E/AndroidRuntime(23905):位于android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(23905):位于android.app.ActivityThread.main(ActivityThread.java:5313)
E/AndroidRuntime(23905):位于java.lang.reflect.Method.invoke(本机方法)
E/AndroidRuntime(23905):位于java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(23905):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1116)
E/AndroidRuntime(23905):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:809)
这是带有System.exit的日志

I/AndroidRuntime(20479):VM退出,结果代码为1,已跳过清理。
I/AndroidRuntime(23172):VM退出,结果代码为1,已跳过清理。
I/Process(24461):java.lang.RuntimeException
日志在
运行时

更新: 即使我调用
android.os.Process.killProcess(android.os.Process.myPid())

应用程序仍然以新的pid重新启动。
我不知道为什么不能通过代码完全退出。

可能是因为您没有完成以前的活动,当新活动创建异常时,它会关闭当前活动并打开以前的运行时异常。运行时异常会使您的应用程序崩溃,您正试图删除甚至不存在的表,甚至是系统。exit()不要退出您的应用程序。最佳实践是当您使用任何复杂的编码时,使用户尝试捕获。
如果我错了,有人会纠正我

我的所有应用程序都会在出错时重新启动,这似乎发生在Android Studio中。在调用finish()退出活动后,您应该尝试捕获SQLiteException以停止崩溃。

可能是因为您没有完成以前的活动,而当新活动创建异常时,它会关闭当前活动并打开以前的活动。如果我错了,请有人纠正我是的,我尚未完成上一个活动,但运行时异常不会使应用程序崩溃?即使我调用
Systme.exit()
给我们看一些代码,为了进一步澄清,您正在删除不存在的表。因此,检查那边的条件。代码是正常的
运行时异常
,我将尝试在github
系统中发布一个新项目,出现相同的错误。exit()
在第一个活动中工作,但我不明白,
运行时异常
不是崩溃应用程序或崩溃,而是自动启动,如果有以前的活动谢谢,我只是不明白为什么我的应用程序没有完全退出,即使我调用
kill pid