异步详解

//        String:开始异步任务执行时传入的参数类型;Integer:异步任务执行过程中,返回下载进度值的类型;List<FragmentData>:异步任务执行完成后,返回的结果类型;
        class MyAsyncTask extends AsyncTask<String,Integer,List<FragMentData>>{
//        onPreExecute() --> doInBackground() --> publishProgress() --> onProgressUpdate() --> onPostExecute()
//        如果不需要执行更新进度则为onPreExecute() --> doInBackground() --> onPostExecute(),


//        这个方法会在后台任务开始执行之间调用,在主线程执行。用于进行一些界面上的初始化操作,比如显示一个进度条对话框等。
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }

//            这个方法中的所有代码都会在子线程中运行,我们应该在这里去处理所有的耗时任务。
            @Override
            protected List<FragMentData> doInBackground(String... params) {
                return null;
            }

//            当在后台任务中调用了publishProgress(Progress...)方法后,这个方法就很快会被调用,方法中携带的参数就是在后
//            台任务中传递过来的。在这个方法中可以对UI进行操作,在主线程中进行,利用参数中的数值就可以对界面元素进行相应的更新。
            @Override
            protected void onProgressUpdate(Integer... values) {
                super.onProgressUpdate(values);
            }

//            doInBackground(Params...)执行完毕并通过return语句进行返回时,这个方法就很快会被调用。返回的数据会作为
//            参数传递到此方法中,可以利用返回的数据来进行一些UI操作,在主线程中进行,比如说提醒任务执行的结果,以及关闭掉进度条对话框等。
            @Override
            protected void onPostExecute(List<FragMentData> fragMentDatas) {
                super.onPostExecute(fragMentDatas);
            }

//            除了上面四个方法,AsyncTask还提供了onCancelled()方法,它同样在主线程中执行,当异步任务取消时,onCancelled()会被调用,
//            这个时候onPostExecute()则不会被调用,但是要注意的是,AsyncTask中的cancel()方法并不是真正去取消任务,只是设置这个任务
//            为取消状态,我们需要在doInBackground()判断终止任务。就好比想要终止一个线程,调用interrupt()方法,只是进行标记为中断,
//            需要在线程内部进行标记判断然后中断线程。
            @Override
            protected void onCancelled() {
                super.onCancelled();
            }

//            new DownloadTask().execute(); 在需要启动的地方调用
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值