视频捕获意图导致低 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
}
这个问题很复杂。基本上,我有一个 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
}