我一直在使用loopj庫與我的服務器進行交互。 我在一個片段內創建了一個視圖尋呼機,並因此創建了子片段 在向這個服務器發送一個請求的這些子片段中,我得到了正確的響應。 當我發送刷新請求到服務器時,問題就出現了,響應仍然正確,但UI變黑,我無法再與UI進行交互。在發送兒童片段中的另一個請求時發生UI阻塞
我與服務器連接的代碼是:
private void setWatchlistData() {
String url = "";
switch (watchlist_type) {
case 1:
url = "/getWatchList";
break;
case 2:
url = "/getTrendingWatchList";
break;
case 3:
url = "/getRecommendedWatchList";
break;
}
responseHandler = new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, JSONObject response) {
if (progressDialog.isShowing()) {
progressDialog.dismissWithAnimation();
if (swipeRefresh.isRefreshing())
swipeRefresh.setRefreshing(false);
try {
Log.d(TAG, response.toString());
if (!response.isNull("status")) {
if (response.getBoolean("status")) {
assets = new ArrayList<Asset>();
JSONArray arr = response.getJSONArray("watchlist");
for (int i = 0; i < arr.length(); i++) {
JSONObject obj = arr.getJSONObject(i);
Asset a = new Asset();
a.setType(new AssetType(obj.getJSONObject("type")));
a.setName(obj.getString("name"));
a.setId(obj.getInt("id"));
switch (a.getType().getType()) {
case AssetType.ASSET_TYPE_STOCK:
a.setSymbol(obj.getString("symbol"));
assets.add(a);
break;
}
}
setData();
} else {
new SweetAlertDialog(getActivity(), SweetAlertDialog.ERROR_TYPE).setTitleText("Error").setContentText(response.getString("message")).setConfirmText("Ok").setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sweetAlertDialog.dismiss();
}
}).show();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, String responseString, Throwable throwable) {
Log.d(TAG, responseString + "");
progressDialog.dismissWithAnimation();
new SweetAlertDialog(getActivity(), SweetAlertDialog.ERROR_TYPE).setTitleText("Error Occured").setContentText(responseString + "").show();
}
};
RequestParams params = new RequestParams();
params.add("user_id", String.valueOf(new UserDetailsHandler(getActivity()).getUser().getId()));
client.setTimeout(99999);
client.cancelAllRequests(true);
client.get(CommonUtils.BASE_URL + url, params, responseHandler);
progressDialog.show();
}
刷卡刷新功能:
swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
setWatchlistData();
}
});
第一次調用後,關注列表會更新,但在刷卡刷新時會顯示isssue。
loopj庫已經使用AsyncTask進行調用,因此它不能解決這個問題嗎? – mayankdtu