Timer对象在使用轮询操作时会出现轮询停不下来的情况,从而产生ANR

timer.schedule(任务task,延时时间,间隔时间) //轮询情况只需要改第三个参数
在界面onDestory或者onStop的时候一定要释放timer,避免造成内存泄露
防止为空判断

在只加了cancel的时候我发现偶尔会有线程无法停止的情况,看源码和资料有人说是因为task线程中还有其他任务没有执行完,cancel停止当前的线程,所有timer提供了purge()方法,官方释义:Removes all cancelled tasks from this timer’s task queue.意思就是purge方法会检查timer队列里标记为canceled的task,将对它的引用置为null,来释放内存引用
故,问题解决了!!!
本文探讨了在使用Timer对象进行轮询操作时遇到的ANR问题及内存泄露风险。通过合理设置参数、在界面生命周期回调中正确释放资源,以及利用cancel和purge方法,有效避免了这些问题的发生。
654

被折叠的 条评论
为什么被折叠?



