您的位置:首页 > 其它

关于startActivityForResult()方法后Activity直接退出的问题原因和解决办法

2015-05-14 16:04 597 查看

现象:

今天在做调用相机拍照然后进行一些裁剪后显示的Demo。大题思路就是这样
private final View.OnClickListener onClickListener = new View.OnClickListener() {

@Override
public void onClick(View v) {
if(v==btnPhone){ //从相册获取图片
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
IMAGE_UNSPECIFIED);
startActivityForResult(intent, PHOTO_ZOOM);
}else if(v==btnTakePicture){ //从拍照获取图片
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(
new File(Environment
.getExternalStorageDirectory(),"temp.jpg")));
startActivityForResult(intent, PHOTO_GRAPH);
}

}

};


直接根据用户 的选择调用安卓本身的一些功能就好了

通过startActivityForResult()方法在处理完成后回调到我们这个activity就好了 很简单
但是却遇到了一个问题 就是处理完成后activity直接退出了 通过Log发现startActivityForResult根本没有被执行到
这是怎么回事呢?

原因:

假设有activity1和activity2, activity1调用activity2

1. activity1是SingleTask模式 也就是不在前台的时候就自动被销毁了
自然不能接收到activity2的数据 也就呈现出了直接退出的现象

解决方法:改成标准模式
2. setResult的第一个参数对应上面onActivityResult的第二个参数,注意别把onActivityResult的第一个参数与第二个参数搞混淆了,一个是请求标记,一个是返回标记。
解决办法:分清楚就好了 没啥好说的
3. 最近在华为的手机上面发现Activity调用startActivityForResult后返回结果时,调用的Activity都会被重新创建,也就是Activity被销毁了。
在网上经过一番查找,发现有哥们说在手机开发人员选项里面有这么一项“不保留活动”被勾上了, 一看还真是。 把那个勾去掉一切又恢复正常了。

这个是百度到的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐