android AsyncTask 在项目中的特殊用法

       项目中用到了附件上传功能,于是我就想到用AsyncTask 来做附件上传,但是项目中附件上传的地方很多,所以需要把附件上传功能独立出来,但是这样就会出现一个问题,如果在上传附件之后我还需要其他的操作,这时候其他的操作要写在那里,直接写在AsyncTask.execute()下面吗?


由于AsyncTask 是异步的,这时候会出现附件还在上传的时候,下面其他的操作就开始执行,这时候逻辑就会出现问题,于是,我就在想如何确保附件上传成功之后才执行下面的操作,我上网查了下AsyncTask 的用法没有查到,于是自己就费点脑力想这个问题,一开始想通过回调函数来解决这个问题。

    具体是创建接口 A,里面有方法c ,使用方法是构造AsyncTask 对象的时候传入一个 实现A接口的对象,等上传附件完成之后回调A对象的c方法,但是我遇见一个问题,以为上传附件是在doInBackground方法中执行的,当我回调A对象的c方法的时候如果操作UI就会报错。

最后使用的方法是构造AsyncTask对象的时候传入一个handler,当附件上传成功之后,我先判断handler是否为null,不为null,我就直接相handler发送一条消息,具体你相干什么,自己写在handler中,这样就避免了非UI线程操作UI报错的问题,看来AsyncTask 和handler相结合才是王道啊。

做个备注,供以后复习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值