AsyncTask 替代背景图像下载? (AsyncTask ---------已弃用)
Posted
技术标签:
【中文标题】AsyncTask 替代背景图像下载? (AsyncTask ---------已弃用)【英文标题】:AsyncTask Alternative for background image Download? (AsyncTask ---------Deprecated) 【发布时间】:2021-02-20 19:27:25 【问题描述】:由于 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开发中是否有替代在后台下载图像。
我在 *** 上阅读了使用线程执行后台任务的解决方案,但是当我按下按钮下载图像时,它会使应用程序崩溃。
【问题讨论】:
使用图像加载库,例如 Glide 或 Picasso。它们会自动为您处理后台线程。 【参考方案1】:为了运行你有的后台任务
多线程 Rx Java 协程 (Kotlin)在以上三个协程中首选,因为它易于学习,效率更高
【讨论】:
以上是关于AsyncTask 替代背景图像下载? (AsyncTask ---------已弃用)的主要内容,如果未能解决你的问题,请参考以下文章
如果使用 Asynctask 将 URL 存储在 ArrayList 中,如何从服务器下载图像?
Android多线程分析之五:使用AsyncTask异步下载图像
如何从服务器下载图像如果使用Asynctask存储在ArrayList中的URL?
通过 AsyncTask 下载图像并将其显示在 Imageview 中而不存储在 sdcard 中