0
点赞
收藏
分享

微信扫一扫

哇-----Android居然可以这样请求网络资源,快来吃瓜了。

飞进科技 2022-02-16 阅读 45

首先,先知道网络请求是一个耗时的操作。所以我们给他写入AsyncTask线程中,来请求网络信息。

我们先声明一个String类型用来写入网址,然后写一个类让它继承AsyncTask。写入它的三个参数<传入的参数的类型,读取网络数据的进度的类型,传出的参数类型>

在重写它的三个方法,在doInBackgroun方法中调用我们已经封装好的方法。

在onPostExecute方法中个更新控件内容。

/**
     * @MainActivityImageAsyncTask:用于请求网络图片数据的AsyncTask
     */
    class MainActivityImageAsyncTask extends AsyncTask<String,Void,Bitmap>{

        @Override
        protected Bitmap doInBackground(String... pasem) {
            Bitmap bitmap = StartAsyncTask.getUrlHttpBitmap(pasem[0]);
            return bitmap;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected void onPostExecute(Bitmap bitmap) {
            super.onPostExecute(bitmap);
            asynctaskIm.setImageBitmap(bitmap);
        }
    }

下面我们来看封装的方法

/**
     * @getUrlHttpBitmap:用于请求网络图片数据
     */
    public static Bitmap getUrlHttpBitmap(String path){
        Bitmap bitmap = null;
        try {
            URL url = new URL(path);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            InputStream is = connection.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);
            bitmap = BitmapFactory.decodeStream(bis);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return bitmap;
    }

最后我们在onCreate启动这个线程

new MainActivityImageAsyncTask().execute(imuri);
举报

相关推荐

0 条评论