您的位置:首页 > 其它

三星 s6 edge onDestroy多次调用问题

2016-01-28 15:37 225 查看
项目里面有个问题单是订购成功却不能直接播放

首先看log 是订购成功的广播成功发送  但是没有接收操作 自然不会有播放的动作

一开始以为是设备将广播拦截的问题,但是通过debug的方式发现,在订购界面的订购成功的广播是发送了的,然而在播放鉴权的基类中却没有接收到

并且在debug断点的走向中,是走到了unregisterReceiver的方法,将播放接收器注销掉了,而此方法是在订购界面的onDestroy方法中发送的广播被基类的接收器接收并走到了注销播放器的操作处。

令人疑惑的是,在订购界面的oncreate方法后,就走到onDestroy的方法了。

知道了以上的信息,反而不知道从何下手了。

经大神指点,直接研究本订购activity的生命周期,将所有其他的逻辑注销,只留下setcontentview的语句,此时,发现会走至onResume 以及onPause 然后又重新oncreate 但是不会走到onDestroy方法了。

一点儿点儿释放逻辑代码,此时发现在只释放了requestWindowFeature的情况下,就会运行至onDestroy方法,于是认为是本语句的问题,将其他代码释放,只注销了requestwindowfeature的语句,发现还是走到了onDestroy的方法

又一次迷惑,大神则在研究本订购activity的生命周期的发现中 一下看到重点:有重新oncreate了一次!!!这个却被我忽略了。

网上搜索多次调用oncreate方法,大多说的是由于横竖屏切换,才有本问题,抱着试一试的态度 按照其中的提示 在manifest中对应的activity注册的内容中 添加了

android:configChanges="locale|orientation|keyboardHidden"

运行后还是有多次调用oncreate的情况发生。

搜索到http://blog.csdn.net/lvxiangan/article/details/41333475

其文章内容有

情况1:手机锁屏或屏幕旋转

手机横竖屏的时候重新onCreate,所以在配置文件中增加了配置选项:

android:configChanges="orientation|keyboardHidden"

可是跟踪发现,在屏幕旋转的时候还会继续调用onCreate

从sdk 3.2+,当手机屏幕发现旋转,新增加一个screenSize,这个值也会跟着发生改变。所以需要把screenSize这项也要加入到配置文件中。

android:configChanges="orientation|keyboardHidden|screenSize"

添加了screenSize,发现错误被解决。

总结分析,由于三星 s6
edge有许多自动转屏的特殊化处理,即是自己项目中并没有转屏,可能也有转屏的情况发生,从而多次调用oncreate方法,即会有onDestroy方法被调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  三星