两种实现方式,技术点:
1.handler新用法
2.接口回调
3.handler整体封装
4.原生请求httpurlconnect下载图片
(1)清单文件:
<uses-permission android:name="android.permission.INTERNET"/>
(2)接口:
package com.example.imgdownload;
import android.os.Message;
public interface HandlerListener {
void handleResult(Message msg);
}
(3)封装的handler
package com.example.imgdownload;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import androidx.annotation.NonNull;
public class MyHandler extends Handler {
HandlerListener listener;
public HandlerListener getListener() {
return listener;
}
public void setListener(HandlerListener listener) {
this.listener = listener;
}
public MyHandler(@NonNull Looper looper) {
super(looper);
}
@Override
public void handleMessage(@NonNull Message msg) {
Log.e("TAG", "MyHandler: " + msg.what);
getListener().handleResult(msg);
}
}
(4)主界面
package com.example.imgdownload;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
public class MainA