怎样保证一个可能失败的任务一定被执行
将可能失败的任务(executeDownload()
)包在一个循环体中,

循环体有一个finished
标记,标记为true时停止
当任务失败时抛出 RetryXXX 异常(RetryXXX 异常为自定义的异常)

此时finished
标记仍然为false,
然后到finally中取消原先的任务,那么就会到下次循环体,再次尝试执行任务….
如此循环,直到任务确认执行完毕不再抛出RetryXXX 异常。
如此,便能够确保可能失败的任务一定执行成功。
- code excerpt from Android source/DownloadProvider