三星手机note 3 调用系统拍照后,屏幕旋转导致,activity生命周期变更,程序奔溃或者无法获取图片。

来源:互联网 发布:java难题 编辑:程序博客网 时间:2024/04/30 23:21

在三星的手机上使用时,发现调用相机拍完照片返回时,触发它的activity的生命周期调用了onDestroy()–>onCreate(); 重新走了onCreate()方法;导致系统崩溃。

方法一:刚开始调用了onSaveInstanceState(Bundle savedInstanceState)和onRestoreInstanceState(Bundle savedInstanceState)这个方法来实现,虽然方法比较笨,但是可以通过在onSaveInstanceState中保存一些你需要的变量,在onCreate()方法中判断savedInstanceState是否为null,不为null则调用onRestoreInstanceState()方法取出之前存的变量来使用,这相当于重新加载了一边当前activity。

方法二:上面的方法可行,但并不是解决问题的根本办法,后来通过查看发现在调用相机时,activity从竖屏切换到了横屏,在横竖屏切换导致了activity重新装载,找到根本原因后,在activity中通过
android:configChanges=”orientation|keyboardHidden|screenSize”

这个属性,可以约束调用相机时,保持当前activity竖屏状态不变,从而解决了activity重新加载的问题。
是在manifest文件中配置的。注意是三个属性,不能少。

        <activity            android:name=""            android:screenOrientation="portrait"            android:configChanges="orientation|keyboardHidden|screenSize"            android:windowSoftInputMode="stateHidden|adjustResize|stateAlwaysHidden" >        </activity>
1 0
原创粉丝点击