簡體   English   中英

重新啟動時,Android應用程序崩潰

[英]Android application crashes when relaunching

我最初是在這里問這個問題的:
http://www.experts-exchange.com/Programming/Languages/Java/Android/Q_26754261.html
但是我想這可能是一個更好的地方。

我已經制作了一個可以調用某些本機代碼的Android應用程序。 當我第一次在Android 2.2設備上運行該應用程序時(按圖標),它可以正常工作,但是如果我按“后退”按鈕,然后再次按其圖標重新啟動該應用程序,則該應用程序將崩潰(來自eclipse的信息):

 01-19 13:21:51.989: INFO/DEBUG(30): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    01-19 13:21:51.989: INFO/DEBUG(30): Build fingerprint: 'generic/sdk/generic:2.3/GRH55/79397:eng/test-keys'
    01-19 13:21:51.989: INFO/DEBUG(30): pid: 354, tid: 381  >>> Test.Application <<<
    01-19 13:21:51.989: INFO/DEBUG(30): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000005a

我已經檢查了本機代碼,沒有看到任何錯誤。 該代碼在我第一次運行時也有效。 這與按下后退按鈕時並非所有資源都釋放有關。 我雖然通過在onDestroy()中插入System.exit(0)找到了解決此問題的簡單方法,但這僅在應用程序處於橫向模式時才有效。

在橫向模式下,生命周期如下:

    01-15 22:38:29.913: INFO(18062): onCreate
    01-15 22:38:30.143: INFO(18062): onResume

Pressed back button

    01-15 22:38:34.093: INFO(18062): onPause
    01-15 22:38:34.343: INFO(18062): OnDestroy

在縱向模式下,生命周期如下:

    01-15 22:41:00.343: INFO(18167): onCreate
    01-15 22:41:00.863: INFO(18167): onResume
    01-15 22:41:00.913: INFO(18167): onPause
    01-15 22:41:00.913: INFO(18167): OnDestroy
    01-15 22:41:01.423: INFO(18167): onCreate
    01-15 22:41:01.693: INFO(18167): onResume

Pressed back button

    01-15 22:41:05.663: INFO(18167): onPause
    01-15 22:41:05.963: INFO(18167): OnDestroy

因此,在縱向模式下,事情會發生兩次-因此,如果我在onDestroy中插入System.exit(0),則設備在豎立/縱向模式下不會啟動應用程序。

我想最好的解決方案是找到導致本機代碼崩潰的真正原因,但到目前為止,我還沒有找到原因。 也許與內存不足有關。 我曾嘗試運行Debug.getNativeHeapFreeSize(),但有時可用內存量非常低,但錯誤消息顯示“故障地址”。

應用程序崩潰后,我按其圖標,然后再次運行該應用程序而沒有出現問題。 因此,應用程序僅在按其圖標一半的時間成功啟動。

您是否知道哪里出了問題或解決方法? 我在此站點上搜索了答案,並找到了有關雙重生命周期問題以及如何獲取JNI堆棧跟蹤的一些信息。 我將進一步研究它,看看是否可以找到原因。 我還可以做出一個丑陋的解決方法,以確保如果設備處於縱向模式,但是如果應用程序隨后安裝在不存在雙重生命周期問題的設備上,則不會在首次調用System.exit(0)時調用onDestroy在縱向模式下,應用程序將無法正常關閉。

/金

實際上是因為我忘記釋放C ++代碼中的某些內存而導致發生此錯誤。 現在,它終於不再崩潰,並且雙生命周期問題也不再重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM