微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AsyncTask替代背景图片下载? AsyncTask ---------已弃用

如何解决AsyncTask替代背景图片下载? AsyncTask ---------已弃用

已弃用AsyncTask。我想在后台下载图像,但是我不知道如何在不扩展到AsyncTask的情况下实现异步功能。我需要一些其他方式来下载背景图片

package com.developoNetwork.ImageDownload;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.atomic.atomicreference;
import java.util.logging.Logger;

import javax.net.ssl.HttpsURLConnection;

public class MainActivity extends AppCompatActivity {

     ImageView imageView;

    public  void imageDownload(View view){
        ImageDownloader imageDownloader = new ImageDownloader("https://i.pinimg.com/originals/ca/76/0b/ca760b70976b52578da88e06973af542.jpg");

        try {
          imageDownloader.download();


        } catch (Exception e) {
            e.printstacktrace();
        }


    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = findViewById(R.id.imageView);
    }



//Download Image
    public class ImageDownloader{
       String urls;
       ImageDownloader(String url){
           urls = url;
       }


        public void download() {
            System.out.println("Start");
       

               try {
                   Logger.getLogger("Start");
//                  ImageView  imageView = findViewById(R.id.imageView);
                   URL url = new URL(urls);
                   HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
                   InputStream inputStream = connection.getInputStream();
                   Bitmap image = BitmapFactory.decodeStream(inputStream);
                   imageView.setimageBitmap(image);
                   
                   Logger.getLogger("Done");

               } catch (MalformedURLException e) {
                   System.out.println("Error Malformed");
                   e.printstacktrace();
               } catch (IOException e) {
                   System.out.println("Exception");
                   e.printstacktrace();
               }





        }
    }
}

问题 我如何实现异步行为。由于现在不赞成使用。 android开发中是否可以选择在后台下载图像。

我在 stackoverflow 上阅读了使用线程执行后台任务的解决方案,但是当我按下按钮下载图像时,它使应用程序崩溃。

解决方法

要运行后台任务

  • MutliThreading
  • Rx Java
  • 协程(科特琳)

在上述三个协程中,由于易于学习且效率更高,因此是首选

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。