在缓慢连接下载图像后,应用程序停止一段时间后停止

时间:2014-09-19 11:32:03

标签: android android-asynctask

在我的应用程序中,我从服务器获取图像和数据。当互联网连接正确加载图像。当互联网连接速度变慢时,应用程序会继续运行,并在一段时间后突然停止。

这是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);

即使在慢速互联网连接中如何加载图像?

1 个答案:

答案 0 :(得分:0)

你可能会得到一个 ANR ,这意味着你抓住了 UI超时,因为你试图在AsyncTask中更新UI的应用程序组件(但请记住在doInBackground()方法中管理后台网络处理;要更新UI应用程序组件,您可以使用Handlers或按runOnUiThread()

更新它