在Android下扩展AsyncTask实现多线程批量操作支持 - 源代码解析

在软件开发中,我们经常遇到这样的需求:

 

能否实现一组批量操作?比如批量删除文件?批量对某个对象做一些处理?而且还希望这些东西都是在后台完成的,前台能够继续响应UI?

 

我最近开发的Android WIFI文件管理共享软件文件大师(http://www.wifisharing.mobi/“)就遇到这种需求。我希望能够支持用户对指定的文件或者文件夹的批量操作,比如用户可以批量选取一批文件,然后将它们一并删除。或者统一移动到某个地方来。同时这个批量操作还不能在主UI线程内完成。换言之,我们必须支持后台操作。

 

这个需求看似简单,但它其实隐含了几个重要的部分:

 

1. 抽象批量操作的对象

 

在我的这个case里,对象比较简单。就是文件或者文件夹。所以我们可以写出下面的类来抽象批量操作的对象。

 

 

 

mSrcPath是目标文件的路径,而mSrcName则是文件名。mDst则是目标路径,这是为了支持复制或者剪切操作而增加的。

 

2. 实现某种对象选择机制

 

批量操作一定需要输入,而输入的个体我们上面已经定义出来,但是个体的集合的生成方式(在我的case里,意味着跟踪用户的选取,记录不同目录的结果,在用户切换目录时候更新,最后生成整个集合)却是另一个很复杂的问题。我今天不打算谈论这个问题,这是另一篇文章的主题。

 

3. 批量操作

 

有了数据的输入,也有了数据的定义,下面我们开始实现多线程的批量支持类了。Android里定义了一个类叫AsyncTask,用于支持后台操作,这个类提供了几个函数,在子类里重载他们即可支持后台操作。注意仅仅是后台操作,还不是我们要求的批量后台操作,不过没关系,我们已经距离我们的目标很近了,接下来我们先看看那几个需要重载的函数:

 

 

 

正如他的名字一般,这个函数必须实现。这就是主要干活的函数,这个函数将在另一个单独的,有AsyncTask类创建的线程里在后台调用。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值