# 广播使用
#### 一、创建广播接收器，用来接收下载的各种状态
```java
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
    long len = 0;
    @Override public void onReceive(Context context, Intent intent) {
      String action = intent.getAction();
      //可以通过intent获取到下载实体，下载实体中包含了各种下载状态
      DownloadEntity entity = intent.getParcelableExtra(Aria.ENTITY);
      switch (action) {
        case Aria.ACTION_PRE:  //预处理
          break;
        case Aria.ACTION_POST_PRE: //预处理完成
          //预处理完成，便可以获取文件的下载长度了
          len = entity.getFileSize();
          break;
        case Aria.ACTION_START:  //开始下载
          L.d(TAG, "download start");
          break;
        case Aria.ACTION_RESUME: //恢复下载
          L.d(TAG, "download resume");
          long location = intent.getLongExtra(DownloadManager.CURRENT_LOCATION, 1);
          break;
        case Aria.ACTION_RUNNING:  //下载中
          long current = intent.getLongExtra(DownloadManager.CURRENT_LOCATION, 0);
          break;
        case Aria.ACTION_STOP:   //停止下载
          L.d(TAG, "download stop");
          break;
        case Aria.ACTION_COMPLETE: //下载完成
          break;
        case Aria.ACTION_CANCEL:   //取消下载
          break;
        case Aria.ACTION_FAIL:     // 下载失败
          break;
      }
    }
  };
```

#### 二、在Activity中创建广播过滤器
```java
@Override protected void onResume() {
  super.onResume();
  IntentFilter filter = new IntentFilter();
  filter.addDataScheme(getPackageName());
  filter.addAction(Aria.ACTION_PRE);
  filter.addAction(Aria.ACTION_POST_PRE);
  filter.addAction(Aria.ACTION_RESUME);
  filter.addAction(Aria.ACTION_START);
  filter.addAction(Aria.ACTION_RUNNING);
  filter.addAction(Aria.ACTION_STOP);
  filter.addAction(Aria.ACTION_CANCEL);
  filter.addAction(Aria.ACTION_COMPLETE);
  filter.addAction(Aria.ACTION_FAIL);
  registerReceiver(mReceiver, filter);
}
```
