1.现象
在使用安卓手机的一些应用调用照相机时,我们会发现有时候当我们拍照完毕时,程序会出现闪退,非常影响用户体验。目前项目中也有类似的拍照上传功能,当使用米3手机测试时,拍照上传功能可以正常使用,当我们换上红米或者其他一些比较早或者比较低端的手机时,就出现了闪退的问题。
1.1开启相机的intent
/* mPictureCachePath为当前照相相片的存储路径 */
pictureCachePath = Utility.getExternalCacheDir(this)+...;
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(mPictureCachePath)));
startActivityForResult(intent, REQUEST_CODE_TAKE_PHOTO);
1.2onActivityResult接收intent返回值并获取bitmap
File file = new File(mPictureCachePath);
if (file.exists()) {
Bitmap bitmap = BitmapUtils.convertToBitmap(
mPictureCachePath, width, height);
}
2.分析问题
经过debug我们可以发现,如果程序发生闪退,此时mPictureCachePath值为null,可是我们在一开始已经为这个变量赋值,为什么当从相机程序返时,mPictureCachePath这个全局变量会变为null?
那我们给mPictureCach