nil*_*ash 0 android oncreate android-camera
嗨,我正在开发 android 应用程序,我正在尝试使用设备摄像头捕获图像并将其保存到特定位置。我用以下方式尝试过:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("inside on create ", "inside on create ");
capturePhotoForRecordUpload();
}
public void capturePhotoForRecordUpload() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
File storageDir = new File(Environment.getExternalStorageDirectory().getPath() + "/MyApp");
if(!storageDir.exists())
storageDir.mkdirs();
if(!storageDir.exists())
storageDir.mkdir();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory().getPath() + "/MyApp"+"/sample.jpg")));
startActivityForResult(takePictureIntent, 7);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在上面的代码中遇到了问题。当我开始我的活动时,它正在打开我的相机。但是当我单击后退按钮时,它再次创建我的活动并再次打开我的相机应用程序。这是正确的行为还是我做错了什么?在不要求破坏我的活动的情况下,它再次进入内部创建。需要一些帮助。谢谢你。
使用相机时,我在少数设备上遇到了同样的问题。将日志放在您的活动 onDestory 中,看看它是否在您启动相机意图时被调用。
这个问题发生在内存不足的设备上(对我来说,它是一款较旧的 LG 手机,安装了 50 多个应用程序,其中许多应用程序运行我们用于测试的各种后台服务)->相机应用程序内存很大,因此系统会在后台终止启动它的进程。这就是为什么您会看到您的活动再次经历其完整的生命周期。
编辑1:
看看以下答案:
对于某些人,解决方案是通过清单更改获得的(请参阅第一个链接)
我实现了其他答案中描述的解决方案,这些解决方案正在处理 savedInstanceState 包,因为我已经手动控制了图像路径。
您还将看到重新创建 Activity 的另一个原因,因为某些手机上的某些相机应用会触发方向更改。如果不是内存问题,也可能是您的问题。
| 归档时间: |
|
| 查看次数: |
3149 次 |
| 最近记录: |