我提到了grafika的ContinuousCaptureActivity来实现一个用MediaCodec录制视频的演示。在大多数情况下,该演示工作正常,但在按下后退键时,我的GT-I9500设备崩溃了(这次崩溃是无法察觉的,因为我们只是假设活动被破坏,我使用'adb shell ps'来检查演示进程是否存在)即可。然后我反复检查了我的源代码,发现我的代码与grafika的ContinuousCaptureActivity几乎相同。所以我做了以下事情:
我在我的GT-I9500设备中安装了grafika的apk并启动了ContinuousCaptureActivity,然后我按了我的手机的后退键,但应用程序没有崩溃,原来grafika工作正常。
我再次检查了我的代码,发现没什么可疑的。
我创建了一个新的android项目,并将其从grafika中复制了ContinuousCaptureActivity.java和其他必要的文件,例如AndroidManifest.xml,activity_continuous_capture.xml等新项目。我修改了AndroidManifest.xml,使ContinuousCaptureActivity成为主要活动。我编译了代码并在我的GT-I9500设备上安装了apk。 同样的事情发生了,我按下后退键后应用程序崩溃了!!!
我真的很困惑这个问题,为什么grafika工作正常,但新项目中的相同代码刚刚崩溃?无论如何我相信有一个解决我的演示崩溃的解决方案因为grafika工作得很好。 有人可以给我一些建议吗?
我可以提供的信息如下:
我对应用程序进行了调试,发现导致崩溃的确切代码,代码为https://github.com/google/grafika/blob/master/src/com/android/grafika/gles/EglCore.java#L191
崩溃非常严重,没有生成墓碑文件且adb日志有限:
06-15 14:39:33.853 I / ActivityManager(771):进程 com.example.grafikaaa(pid 13138)(adj 1)已经去世。
06-15 14:39:33.853 W / ActivityManager(771):强制删除 ActivityRecord {42a876c8 u0 com.example.grafikaaa / .ContinuousCaptureActivity}:app死了,没有保存 国家...... ....
06-15 14:39:33.903 D / Zygote(209):过程13138终止于 信号(11)
===== GL Information ===== vendor : Qualcomm version : OpenGL ES 3.0 V@45.0 AU@ (CL@4169980) renderer : Adreno (TM) 320 extensions: GL_AMD_compressed_ATC_texture GL_AMD_performance_monitor GL_AMD_program_binary_Z400 GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_robustness GL_EXT_sRGB GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_type_2_10_10_10_REV GL_NV_fence GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object GL_OES_vertex_half_float GL_OES_vertex_type_10_10_10_2 GL_QCOM_alpha_test GL_QCOM_binning_control GL_QCOM_driver_control GL_QCOM_extended_get GL_QCOM_extended_get2 GL_QCOM_perfmon_global_mode GL_QCOM_tiled_rendering GL_QCOM_writeonly_rendering ===== EGL Information ===== vendor : Android version : 1.4 Android META-EGL client API: OpenGL_ES extensions: EGL_ANDROID_image_native_buffer EGL_EXT_create_context_robustness EGL_KHR_create_context EGL_KHR_fence_sync EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_lock_surface EGL_KHR_wait_sync ===== System Information ===== mfgr : samsung brand : samsung model : GT-I9500 release : 4.3 build : JSS15J.I9500ZSUEMJ6