碰到一个奇怪的问题, app在其他的系统上都没问题,唯独在5.0的机器上,一拍照就崩溃:
用Bugly捕获的错误信息是这样的:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.toString()' on a null object reference
这里是因为在 onActivityResult
的回调里使用了拍照之前设置的Uri变量导致的。
同时,注意到的还有用户的访问路径是这样的:
52017-11-06 16:40:35 com.maowujian.sale.activities.SaleActivity onCreated
62017-11-06 16:40:35 com.maowujian.sale.activities.SaleActivity onResumed
72017-11-06 16:40:39 com.maowujian.sale.activities.SaleActivity onPaused
82017-11-06 16:41:06 com.maowujian.sale.activities.SaleActivity onDestroyed
92017-11-06 16:41:06 com.maowujian.sale.activities.SaleActivity onCreated
很明显,这里拍照之后Activity似乎自动restart了。
这里找到两处比较靠谱的解释:
Android: Activity getting Destroyed after calling Camera Intent
【Android进阶】android:configChanges属性总结
大体意思是横竖屏切换和屏幕尺寸变化会重新调用Activity的所有生命周期方法,解决方法是在AndroidManifest.xml中对应的Activity上设置
android:configChanges="orientation|screenSize"
等属性。