Android Fragment實現懶載入
阿新 • • 發佈:2019-02-03
在最近的專案中一個介面中有四個Fragment。每個碎片中都要進行網路請求。
週期也開始並進行了載入。後來在網上進行了搜尋找到了一個非常簡單的官方自帶的方法setUserVisibleHint(boolean isVisibleToUser)。我們可以通過這個方法來判斷哪個碎片現在正在顯示,當該碎片正在顯示在我們眼前時為true。這樣我們就可以一句該方法來進行網路請求了。下邊廢話不多說直接上程式碼:
private long refreshTime = 0; //請求時間
public void setUserVisibleHint(boolean isVisibleToUser) {
if (isVisibleToUser && isVisible()) {
if (refreshTime == 0
|| (refreshTime != 0 && (System.currentTimeMillis() - refreshTime) > 30 * 60 * 1000)) {
if (isConnected) {
initData();// 從後臺獲取資料
}
}
}
super.setUserVisibleHint(isVisibleToUser);
};
...
...
// 網路請求方法
private void initData() {
myProgressDialog.show();
RequestParams params = new RequestParams();
params.addBodyParameter("sessionId", sessionId);
params.addBodyParameter("pageNo", "1");
params.addBodyParameter("pageSize", "12");
netUtil.getNetGetRequest(findHotUrl, params);
// 在這裡我們將請求時間賦值 可以達到三十分鐘後再請求的效果(雖然有時候 螢幕黑一段時間 再次喚醒的時候也會載入進行網路請求這個就暫時沒有明白)
refreshTime = System.currentTimeMillis();
}
...
...
..
if (getUserVisibleHint()) {
initData(); // 請求的時候一個判斷
}
很簡單的一個方法就解決了懶載入的問題。希望對大家有幫助!(菜雞成長史ing)