第二個電商專案Bug點統計和解決方法
第二個完成的專案。在完成專案後,我總結了那些自己感覺重要的BUG.
1. BUG系列一:設定延時,導致Activity銷燬後,延時中的PullToRefreshListView 為null
· Bug現象
Bug 85536:在網路不好情況下,快速進入退出商品詳情頁面,崩潰
· Bug原因
這個Bug很難實現,經過多次的操作,終於出現,是自己程式碼的問題。我是在載入完資料後,完成重新整理,並延時了0.5秒;
PullToRefreshListView.onRefreshComplete();`
但是快速進入退出,會導致PullToRefreshListView空指標崩潰
· Bug解決方法
去掉延時,並判斷是否為空
BUG系列二:圖片未對映到公網地址,仍是私網地址開頭,導致在公網中無法顯示
· Bug現象
Bug 88095 - 商城首頁圖片載入慢,無法顯示
· Bug原因
這個Bug是因為伺服器傳過來的圖片url還是私網開頭的,在公網下無法訪問。
· Bug解決方法
圖片地址加對映,改為公網開頭BUG系列三:按鈕多次點選/來回切換,導致多次訪問介面
· Bug現象
Bug 88831 - 搜尋條件相同,點選多次搜尋;點選搜尋後,跳轉到搜尋結果頁面,再次點選EditText返回,反覆,快速點選;商品列表中出現重複的商品
· Bug原因
按鈕多次點選,是訪問了多次介面;第二種是因為,反覆快速搜尋,第一次返回的資料和第二次返回的資料都顯示在第二次的介面
· Bug解決方法
搜尋按鈕,做了防止重複多次點選;進入搜尋結果頁面,先顯示轉圈動畫,使其有個緩衝。BUG系列四:將app放至後臺,長期後,Activity被回收,重新開啟App崩潰
· Bug現象
Bug 89087 返回手機主螢幕,再進app閃退,再進APP就正常了
· Bug原因
首頁activity 被回收導致開啟是閃退
其中MainActivtiy中有一段程式碼:
/**
* 當不確定該Activity是否會被銷燬,通常發生於onpause之後onstop之前,例如:回到桌面,螢幕熄滅等動作會呼叫
*
* @param outState
*/
protected void onSaveInstanceState (Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(SAVED_FRAGMENT_INDEX, nowMenuIndex);// 儲存住當前fragment的下標
}
Activity被回收,導致MainActivity中的fragment中的getActivity()為null
· Bug解決方法
程式碼修改如下:
/**
* 當不確定該Activity是否會被銷燬,通常發生於onpause之後onstop之前,例如:回到桌面,螢幕熄滅等動作會呼叫
*
* @param outState
*/
protected void onSaveInstanceState(Bundle outState) {
/**
* Description:Activity被回收導致fragment的getActivity為null的解決辦法,
* 將super.onSaveInstanceState(outState);註釋掉,讓其不再儲存Fragment的狀態,達到其隨著MainActivity一起被回收的效果!
*/
// super.onSaveInstanceState(outState);
outState.putInt(SAVED_FRAGMENT_INDEX, nowMenuIndex);// 儲存住當前fragment的下標
}
這樣這個麻煩的Bug就解決了,感謝我的同事幫忙解決。
BUG系列五:輪播廣告欄有圖片改變,重新整理後,圖片錯亂
· Bug現象
Bug 89031 輪播廣告的圖片在第二張時,往前移動到第一張顯示第二張的圖片
· Bug原因
輪詢廣告重新整理後,圖片的回收不正確,有錯亂
· Bug解決方法
用了蠢的方法,重新整理,重新去新建輪詢廣告,刪除之前那個。BUG系列六:商品詳情中,評論上滑載入,最後一頁的正在載入一直下不去,不消失。
· Bug現象
Bug 89032 商品詳情中,評論上滑載入,最後一頁的正在載入一直下不去,不消失
· Bug原因:不知道
· Bug解決方法
修改程式碼:
@Override
public void onPullUpToRefresh(PullToRefreshBase refreshView) {// 下拉載入更多
refreshView.getLoadingLayoutProxy().setRefreshingLabel("正在載入");
pageNumber++;
getValuation();
if (pageNumber * pageSize > mAdapter.getCount()) {
loadFinish();
// pullToRefreshListView.onRefreshComplete();
// toast("已獲得所有訊息");
return;
}