主线程上的View.postDelayed()和Handler.postDelayed()有什么区别?
2022-09-01 21:23:24
根据以下文件:Handler.postDelayed(Runnable r, long delayMillis)
将 Runnable r 添加到消息队列中,以便在指定的时间过后运行。runnable 将在此处理程序附加到的线程上运行。
另一方面:View.postDelayed(Runnable action, long delayMillis)
将 Runnable 添加到消息队列中,以便在指定的时间过后运行。可运行对象将在用户界面线程上运行。
我想知道从主线程调用它们时两者之间是否存在差异,特别是,当活动被破坏时是否存在差异?
我已经阅读了这篇文章,关于当我使用内部类处理程序时,我可能如何泄漏活动,我想知道使用是否会导致同样的问题。View.postDelayed()
例如,foo() 是否会导致问题,或者活动的破坏是否会解决匿名类持有对活动的引用的事实?Runnable
public class MyActiviy extends Activity {
private void foo(View v) {
v.postDelayed(new Runnable() {
public void run() {
// some delayed work
}
}, 60000);
finish();
}
}