AsyncTask使用

为了调用关系明确及安全,AsyncTask类在继承时要传入3个泛型参数,3个泛型的主要作用是可以限定每一个方法传入的参数类型 。
execute(Params... params),方法的参数是类泛型的第一个参数类型,并将结果传入doInBackground()
onPreExecute()没有参数
doInBackground(String... params)由第一个参数类型限制传入的参数类型
onProgressUpdate(Integer... values)由第二个参数类型限制传入的参数类型
onPostExecute(Bitmap bitmap)由第三个参数类型限制传入的参数类型

总之,理解输入的三个参数就是输入参数--->中间处理--->输出结果

 调用

AnsyTry anys = new AnsyTry(mImageView);
anys.execute(getIntent().getStringExtra("path"));


 class AnsyTry extends AsyncTask<String, Integer, Bitmap> {
    
            private ImageView mImageView = null;
    
            public AnsyTry(ImageView mImageView) {
                super();
                this.mImageView = mImageView;
            }
    
            @Override
            protected Bitmap doInBackground(String... params) {
                // TODO Auto-generated method stub
                // 显示网络上的图片  
                Bitmap bitmap = null;  
                try {  
                    URL myFileUrl = new URL(params[0]);  
                    HttpURLConnection conn = (HttpURLConnection) myFileUrl  
                            .openConnection();  
                    conn.setDoInput(true);  
                    conn.connect();  
                    InputStream is = conn.getInputStream();  
                    bitmap = BitmapFactory.decodeStream(is);  
                    is.close();  
    
                } catch (IOException e) {  
                    e.printStackTrace();  
                    return null;  
                }  
                return bitmap;  
            }
    
            @Override
            protected void onPostExecute(Bitmap bitmap) {
                // TODO Auto-generated method stub
                mImageView.setImageBitmap(bitmap);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                Intent intent = new Intent(WelcomeSecond.this, MyWebActivity.class);
                startActivity(intent);
                WelcomeSecond.this.finish();
            }
    
            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub\
            }
    
            @Override
            protected void onProgressUpdate(Integer... values) {
                // TODO Auto-generated method stub
            }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android开发者:你真的会用AsyncTask吗? 导读.1 在Android应用开发中,我们需要时刻注意保证...
    cxm11阅读 7,591评论 0 29
  • 1 概述 在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制地...
    Kevin_Junbaozi阅读 3,935评论 0 2
  • 在Android中我们可以通过Thread+Handler实现多线程通信,一种经典的使用场景是:在新线程中进行耗时...
    吕侯爷阅读 6,243评论 2 23
  • 1.Bitmap 具体的方法 Bitmap.recycle() 内存如果bitmap没有回收,会造成什么问题?首先...
    EdwardWinner阅读 3,991评论 2 0
  • 婆婆住院了,突然,重症。整个家庭接下来要面对什么,我不知道。 之前的生活规划也许都将发生变化。我的工作,他的工作。...
    晴天的心里话阅读 1,007评论 0 0