为什么本机Android应用程序在崩溃后立即重启?

时间:2013-09-26 13:13:30

标签: android c++ crash android-ndk native-activity

我有一个使用NativeActivity类的单活动本机应用程序。如果应用程序崩溃,它会立即重新启动。我一整天都在网上搜索这个问题。

使用以下任何一种情况时都会发生这种情况(SIGSEGV已发出信号):
- assert.h中的assert() - 来自android / log.h的__android_log_assert() - abort() - pthread_exit()

我做了一些研究:

https://stackoverflow.com/a/7387659
没有用,发送SIGKILL导致另一个SIGSEGV被发送,应用程序重新启动。

https://stackoverflow.com/a/6121393/1374605
https://stackoverflow.com/a/2632649
我试过只运行一个活动。我错过了什么吗?

当JNI函数(JNIEnv成员)调用throws并且调用另一个JNI函数而不调用它们之间的ExceptionClear()时,也会发生重启。这与JVM有关吗?

在崩溃后重新启动应用程序的任何想法以及如何防止它?

更新(logcat):

//上一次内存转储在这里结束

09-26 15:36:48.771: I/BootReceiver(2374): Copying /data/tombstones/tombstone_06 to DropBox (SYSTEM_TOMBSTONE)  
09-26 15:36:48.781: I/ActivityManager(2374): Process net.devenec.devengine.sample (pid 4750) has died.  
09-26 15:36:48.791: I/ActivityManager(2374): Start proc net.devenec.devengine.sample for activity net.devenec.devengine.sample/android.app.NativeActivity: pid=4763 uid=10075 gids={50075, 1028}  
09-26 15:36:48.801: D/Zygote(1953): Process 4750 terminated by signal (11)  
09-26 15:36:48.801: D/dalvikvm(4763): Late-enabling CheckJNI  
09-26 15:36:48.826: I/dalvikvm(4763): Turning on JNI app bug workarounds for target SDK version 9...  
09-26 15:36:48.841: W/Trace(4763): error opening trace file: No such file or directory (2)  
// My code starts here  
09-26 15:36:48.856: D/DevEngine(4763): [Application] Create  
09-26 15:36:48.856: A/libc(4763): source/android/AndroidApplication.cpp:141: static void Platform::Application::create(ANativeActivity*): assertion "false" failed  
09-26 15:36:48.856: A/libc(4763): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 4763 (evengine.sample)  
09-26 15:36:48.956: I/DEBUG(1950): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***  
09-26 15:36:48.956: I/DEBUG(1950): Build fingerprint: 'samsung/m3xx/m3:4.1.2/JZO54K/I9305XXBMA6:user/release-keys'  
09-26 15:36:48.956: I/DEBUG(1950): Revision: '2'  
09-26 15:36:48.956: I/DEBUG(1950): pid: 4763, tid: 4763, name: evengine.sample  >>> net.devenec.devengine.sample <<<  
09-26 15:36:48.956: I/DEBUG(1950): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad  

// Memory dump从这里开始

修改

关于将此问题标记为重复,我已在第一个链接后解释了为什么这个不同。解决方案在我的案例中不起作用。

1 个答案:

答案 0 :(得分:1)

在我的Galaxy S III(股票ROM)上,应用程序在崩溃后不会自动重启。那么也许他们重新启动取决于你使用哪个ROM?