2013-09-26 63 views
0

我有一个使用NativeActivity类的单活动本机应用程序。如果应用程序崩溃,则立即重新启动。我一直在搜索整个这一问题的互联网。为什么原生Android应用程序在崩溃后立即重新启动?

这使用以下任一(SIGSEGV发信号)的时发生的情况: - 从ASSERT.H
断言() - __android_log_assert()从机器人/ log.h
-
中止() - 了pthread_exit( )

我做了一些研究:

https://stackoverflow.com/a/7387659
没有工作,发送SIGKILL引起打发一个SIGSEGV并重新启动应用程序。

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

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

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

UPDATE(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 

//内存转储从这里开始

编辑

关于这个标记作为重复的问题,我已经解释了为什么在t之后这是不同的他首先链接。解决方案在我的情况下不起作用。

+1

在正常的日志和/或事件日志('logcat -b events')中,logcat中通常存在一些活动管理器重新启动应用程序时的喋喋不休。 – fadden

回答

1

在我的Galaxy S III(正版ROM)上,应用程序在崩溃后不会自动重启。所以也许他们是否重新启动取决于你使用哪个ROM?

+0

我也有Galaxy S III(LTE),我使用的是CyanogenMod(cm-10.1.3-RC2-i9305)。也许我需要尝试与其他设备。 – Devenec

+0

@Devenec这是否有一个设置选项?我相信CM非常灵活,这应该是可配置的。 – Chen

+0

在问题出现时,我正在使用CM的RC版本。在更新到稳定版本之后,问题消失,现在应用程序正在中止。 – Devenec