在我的应用程序中,我从服务器获取图像和数据。当互联网连接正确加载图像。当互联网连接速度变慢时,应用程序会继续运行,并在一段时间后突然停止。
这是AsyncTask
从服务器获取图像和数据:
public void getPendingList() {
new AsyncTask<Void, Void, String>() {
protected void onPreExecute() {
progressDialog = new ProgressDialog(getActivity());
progressDialog.setTitle("Loading....");
progressDialog.setMessage("Please Wait...");
progressDialog.setCancelable(true);
progressDialog.show();
}
protected String doInBackground(Void... params) {
prepareList();
getRegistrationDetails();
getStateList();
for (int i = 0; i < districts.size(); i++) {
JSONObject jsonObject;
try {
jsonObject = new JSONObject(districts.get(i));
String val1 = jsonObject.getString("OptionalParameter");
int val2 = jsonObject.getInt("ItemID");
String val3 = jsonObject.getString("Item_Description");
double val4 = jsonObject.getDouble("Item_Price");
String val5 = jsonObject.getString("Item_Code");
String val6 = jsonObject.getString("Item_Name");
String val7 = jsonObject.getString("ImageFinal");
String ItemCode = jsonObject.getString("Item_Code");
val7.replace("/", "");
listmodel.add(new Item_Master(val2, val3, val4, val6, val7, ItemCode));
listCountry.add("\u20B9" + val4);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return "response";
}
protected void onPostExecute(String result) {
if (result != null) {
if (!result.equals("NO_NETWORK")) {
mAdapter = new GridviewAdapter_Item_Master(FaramentView.getContext(), listmodel);
gridview.setAdapter(mAdapter);
}
dismissDialog();
}
}.execute(null, null);
}
}
获取此数据后,我在此数据中设置了GridView
适配器并设置了图像。我使用Picasso库下载图像并使用以下代码进行设置:
Picasso.with(context).load(list.get(position).getImagePath()).centerCrop()
.resize(150, 150).error(R.drawable.ic_launcher).into(view.imgViewFlag);
即使在慢速互联网连接中如何加载图像?
答案 0 :(得分:0)
你可能会得到一个 ANR ,这意味着你抓住了 UI超时,因为你试图在AsyncTask
中更新UI的应用程序组件(但请记住在doInBackground()
方法中管理后台网络处理;要更新UI应用程序组件,您可以使用Handlers
或按runOnUiThread()