Android中回调下载事件处理实现步骤

  1. 编写接口
public interface DownloadCallback {

    void startDownload();

    void updateProgress(int progress);

    void finishedDownload();
}
  1. 编写事件源
    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);
        }}
    
  2. 设置事件
    	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, "下载完成");
    	    }
    	}
    	```
    
  3. 触发事件
       @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();
                }
            });
        }
    
  4. 查看效果
    Android中回调下载事件处理实现步骤_第1张图片

你可能感兴趣的:(Android,Android开发从入门到精通,Android,回调,下载事件)