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)
以上三个协程中首选,因为它简单易学,效率更高
因为 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)
以上三个协程中首选,因为它简单易学,效率更高