碰到一個奇怪的問題, app在其他的系統(tǒng)上都沒問題,唯獨在5.0的機器上,一拍照就崩潰:
用Bugly捕獲的錯誤信息是這樣的:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.toString()' on a null object reference
這里是因為在 onActivityResult
的回調(diào)里使用了拍照之前設(shè)置的Uri變量導(dǎo)致的。
同時,注意到的還有用戶的訪問路徑是這樣的:
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屬性總結(jié)
大體意思是橫豎屏切換和屏幕尺寸變化會重新調(diào)用Activity的所有生命周期方法,解決方法是在AndroidManifest.xml中對應(yīng)的Activity上設(shè)置
android:configChanges="orientation|screenSize"
等屬性。