视频捕获意图导致低 RAM 设备出现问题

Video capture intent causing issues on low RAM device

这个问题很复杂。基本上,我有一个 FragmentActivity (HomeActivity),它包含一个片段 (CategoriesFragment),该片段包含另一个片段(添加时完全覆盖包含片段的 VideoFragment),我用它来录制在大多数设备上都很好用的视频,但是当我测试运行 android 4.1.2 的 SGH-T989 会发生以下情况。当我完成录制并且底层 CategoriesFragment 可见时,录制视频的 VideoFragment 消失了。没有调用 VideoFragment 的 onActivityResult(),而是调用了 HomeActivity onActivityResult(),但请求代码与我用来创建意图的代码不同。我还在日志中收到此警告:

W/FragmentActivity﹕ Activity result fragment index out of range: 0x300c8

这两个问题应该是发送intent的片段被无故破坏,收不到intent结果?知道为什么会发生这种情况吗?

这是创建意图的代码。

//Record Video
private void recordVideo() {
    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

    fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);

    // set video quality
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
    intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, mVideoLength);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file
    // name

    // start the video capture Intent
    startActivityForResult(intent, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
}

我在这个问题上搜索了很长时间,如果有任何帮助、想法或理论,我将不胜感激

事情是这样的。创建启动意图的片段的 activity 在低 RAM 设备上被销毁。 activity 然后在意图完成时在其 onCreate 中重新创建片段。你想让 Android OS 处理片段的重新创建,如果它负责片段的破坏,所以你只需要将它添加到你的 onCreate 方法

if (savedInstanceState == null) {
    Create fragments
}else{
    Let the OS create them
}