Android开发中三星手机拍照异常处理

 今天在做开发的时候,遇到了一个比较严重的BUG。就是程序中上传图片功能在调用手机拍照时,其它手机都没问题。
 唯独三星手机(N9008s)拍照时程序直接崩溃。三星手机与其它手机拍照时唯一的区别是三星手机在拍照时,手机会切换横竖屏。

想了想可能是手机横竖屏对Activity的生命周期影响导致的,想到了android:configChanges=”orientation|keyboardHidden”这个属性配置。在拍照所在的Activity的AndroidManifest.xml中配置了

<activity
            android:name="com.ldm.test.TakePhotoActivity"
            android:configChanges="orientation|keyboardHidden" />

然后,再拍照果然没问题。
后来百度补充下知识下,果然是这样的原因。在对应的Activity中配置了上面的一行关键代码,当横竖屏切换的时候会直接调用onCreate方法中的onConfigurationChanged方法,而不是重新执行onCreate方法,如果没有使用这个属性就会重新调用onCreate方法了。之前就是因数没有配置这个发生 ,所以对应的Activity调用了onCreate方法,本来拍照返回有数据的,一经过onCreate()方法,肯定变成null啦。
横竖屏对Activity生命周期影响:
1、未设置Activity的android:configChanges时,横竖屏切换会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、当设置Activity的android:configChanges=”orientation”时,横竖屏切换会重新调用各个生命周期,切横、竖屏时只会执行一次
3、当设置Activity的android:configChanges=”orientation|keyboardHidden”时,横竖屏切换不会重新调用各个生命周期,只会执行onConfigurationChanged方法

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值