版权声明:文章内容系为本人原创,如需转载,请注明出处。 https://blog.csdn.net/weixin_43778720/article/details/88072229
- 编写接口
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(); } }); }
- 查看效果