2013-09-26 91 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