论文题目:Static Asynchronous Component Misuse Detection for Android Applications
这是FSE2020上移动专题上的一篇会议论文,主要介绍了在安卓应用中存在的异步组件错误使用的问题,归纳总结了五种不同的错误使用方式,并制定了检测规则进行识别。
- 论文地址:https://dl.acm.org/doi/pdf/10.1145/3368089.3409699
- GitHub项目地址:https://github.com/pangeneral/AsyncChecker
Misuse Patterns
1. StrongReference
指的是在新建实例时参数为强引用类型,因此该对象无法被GC,从而导致内存泄露甚至程序崩溃等问题。下面是文章中的一个例子:
2. NotCancel
指异步任务,在执行后,未手动调用cancel函数。
3. NotTerminate
指在一些异步任务中,存在循环结构,但未设置终止条件。
4. EarlyCancel
指cancel函数调用写在execute函数前。
5. RepeatStart
存在多次执行的问题。