1. 编写接口
    public interface DownloadCallback {    void startDownload();    void updateProgress(int progress);    void finishedDownload();}
  2. 编写事件源
    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);    }}
  3. 设置事件
    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, "下载完成");    }}
  4. 触发事件
       @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();            }        });    }
  5. 查看效果
    Android中如何使用基于回调的事件处理_第1张图片

更多相关文章

  1. Android scrollview嵌套listview 滑动事件冲突的解决方法
  2. Android之TextView------LINK的点击事件
  3. Android触屏事件处理策略
  4. Android: 用Instrumentation类发送鼠标或按键事件
  5. Android 9.0 (P版本) 亮度控制接口变更

随机推荐

  1. 《宅男的android开发指南》(翻译)--1
  2. Android设备获取wifi下的ipv6地址
  3. View类xml属性、方法
  4. Android体系结构
  5. Android(安卓)分页组件
  6. Android中文文档v0.1 beta低调发布,期待
  7. Android(安卓)性能优化之布局优化 (二)
  8. Android中EditText属性
  9. android studio系列之使用指南
  10. Android(安卓)的消息队列模型