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

AsyncTask Alternative for background image Download? (AsyncTask ---------Deprecated)

因为 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 开发中是否有替代方案可以在后台下载图像。

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

您有 运行 个后台任务

  • 多线程
  • 接收Java
  • 协程 (Kotlin)

以上三个协程中首选,因为它简单易学,效率更高