解决postDelayed崩溃问题,postDelayed && postAtTime

# postDelayed && postAtTime #

1.postDelayed(Runnable r, long delayMillis)方法是延迟执行r接口,delayMilles是延迟的时间,即使在Activity销毁之后还会继续执行。

2.postAtTime(Runnable r, Object token, long uptimeMillis)方法是定时执行r接口。第二个参数是标记值,第三个参数是定时时间,计算方法是从手机开机开始计算,之后的毫秒值执行接口。比如从开机到现在是10000毫秒,你想在3000毫秒后执行r,就填入10000 + 3000。当前开机时间获得方法是SystemClock.uptimeMillis()。

3.可能会遇到问题就是,使用postDelayed时候r中含有Context的情况,那么在Activity销毁后还会继续执行,就会造成崩溃,但是又没法取消。解决办法就是使用postAtTime,第二个参数填入this,在onDestory中添加handler.removeCallbacksAndMessages(this),就会取消所有的Runnable接口,就不会继续执行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容