Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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
C++ Android应用程序在重新启动时崩溃_C++_Android_Debugging_Java Native Interface_Portrait - Fatal编程技术网

C++ Android应用程序在重新启动时崩溃

C++ Android应用程序在重新启动时崩溃,c++,android,debugging,java-native-interface,portrait,C++,Android,Debugging,Java Native Interface,Portrait,我最初在这里问了一个问题: 但我想这可能是一个更好的问问题的地方 我制作了一个Android应用程序,它调用一些本机代码。当我第一次在Android 2.2设备上运行应用程序时(通过按下图标),它工作正常,但如果我按下后退按钮,然后再次按下图标重新启动应用程序,应用程序崩溃(来自eclipse的信息): 在纵向模式下,生命周期如下所示: 01-15 22:38:29.913: INFO(18062): onCreate 01-15 22:38:30.143: INFO(1806

我最初在这里问了一个问题:

但我想这可能是一个更好的问问题的地方

我制作了一个Android应用程序,它调用一些本机代码。当我第一次在Android 2.2设备上运行应用程序时(通过按下图标),它工作正常,但如果我按下后退按钮,然后再次按下图标重新启动应用程序,应用程序崩溃(来自eclipse的信息):

在纵向模式下,生命周期如下所示:

    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(),可用内存量有时非常低,但错误消息显示“fault address”

应用程序崩溃后,我按下它的图标,然后再次运行应用程序,没有问题。因此,应用程序只在您按下其图标的一半时间内成功启动

你知道什么地方出了问题或者有什么解决办法吗? 我在这个网站上搜索了答案,找到了一些关于双重生命周期问题以及如何获得JNI堆栈跟踪的信息。我会再看一看,看看能不能找到原因。我还可以制定一个丑陋的解决方案,确保系统安全。如果设备处于纵向模式,则在第一次调用onDestroy时不会调用exit(0),但如果应用程序安装在没有此双重生命周期问题的设备上,则应用程序在纵向模式下不会正确关闭


/基姆

< P>这实际上是因为我忘记了C++代码中的一些内存,这个错误是发生的。现在,它终于不再崩溃,双生命周期问题也不再重要。

请使用“和{}按钮格式化您的问题。
    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