- 编写接口
public interface DownloadCallback {
void startDownload();
void updateProgress(int progress);
void finishedDownload();
}
- 编写事件源
public class HttpUtil {
private Timer mTimer;
private TimerTask mTimerTask;
private DownloadCallback mCallback;
public void setCallback(DownloadCallback callback) {
this.mCallback = callback;
}
public HttpUtil() {
mTimer = new Timer();
mTimerTask = new TimerTask() {
int i = 0;
@Override
public void run() {
if (i < 100) {
mCallback.updateProgress(i++);
} else {
mCallback.finishedDownload();
mTimer.cancel();
} } };
}
public void donwload() {
mCallback.startDownload();
mTimer.schedule(mTimerTask, 1000, 50);
}}
- 设置事件
public class DownloadActivity extends Activity implements DownloadCallback {
private HttpUtil mHttpUtil;
private final String TAG = DownloadActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_download);
mHttpUtil = new HttpUtil();
mHttpUtil.setCallback(this);
}
@Override
public void startDownload() {
Log.i(TAG, "开始下载");
}
@Override
public void updateProgress(int progress) {
Log.i(TAG, "已下载" + progress + "%");
}
@Override
public void finishedDownload() {
Log.i(TAG, "下载完成");
}
}
- 触发事件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_download);
downloadBtn = findViewById(R.id.btn_download);
mHttpUtil = new HttpUtil();
mHttpUtil.setCallback(this);
downloadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mHttpUtil.donwload();
}
});
}
- 查看效果