View.post() 不靠谱的地方你知道吗?
序 这篇文章之前发过一遍,但是有读者指出来有些地方描述的有问题,我后来再看的时候也觉得有问题,所以把之前的文章删掉(主线是没有问题的,删掉只是是避免更多的人误会),准备修改勘误之后,再重新发布一遍,这次会补齐描述问题的 Demo 。 有问题继续文章后面留言,再次感谢细心的读者指出文章内的错误。 一、前言 有时候,我们会需要用到View.post()方法,来将一个 Runnable 发送到主线程去执行。这一切,看似很美好,它最终会通过一个Handler.post()方法去执行,又避免我们重新定义一个 Handler 对象。 但是,在 Android 7.0(Api level 24) 上,View.post()将不再那么靠谱了,你post()出去的 Runnable ,可能永远也不会有机会得到执行。我们先来看看它们的细节。 二、post 在 7.0 的差异 2.1 post 方法的差异 前面提到,这个问题只出现在 Android 7.0 上。那么就先从源码分析 Android 7.0 到底对View.post()做了什么改动。 用 Diff 看一下它们的差异,左边是 Api Level ...