Android新版本開發完成後經過多個版本的測試手機均測試正常,正式上線後卻被客戶反應閃退。獲取到客戶使用的客戶端型號和Android版本測試後均沒問題(此時大腦飄過N匹羊駝)
通過抓取客戶使用日誌找出奔潰異常日誌
Unable to start activity ComponentInfo{com.**/com.**Activity}:
com.alibaba.fastjson.JSONException: syntax error, expect {, actual [, pos 14
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3297)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3405)
at android.app.ActivityThread.-wrap12(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7523)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
Caused by: com.alibaba.fastjson.JSONException: syntax error, expect {, actual [, pos 14
再查看2年前寫的代碼
String jsonResult = SharedPrefUtils.getString(activity, id
+ Constant.**_JSON, "");
if (!TextUtils.isEmpty(jsonResult)) {
processData(jsonResult);
}
// 網絡獲取數據(正式環境請打開)
LogUtils.i(TAG, "網絡獲取數據");
getData();
c
恍然大悟,因爲新的版本更改了json數據格式,這段代碼邏輯是先獲取緩存數據再通過網絡獲取服務端數據,導致舊版本緩存的json數據解析異常,造成閃退。