Handler.postDelayed(new Runnable)是否运行在主线程

 2023-09-15 阅读 26 评论 0

摘要:转载地址:http://blog.csdn.net/zhencheng20082009/article/details/66474641 java暂停线程。知识点 postDelayed(new Runnable())是否运行在主线程中? 答案 是的。 这个 new Runnable() 依附于创建Handler的线程, 代码如下 在绝对的UI线程中打印线程ID: System

转载地址:http://blog.csdn.net/zhencheng20082009/article/details/66474641

java暂停线程。知识点
postDelayed(new Runnable())是否运行在主线程中?
答案 是的。
这个 new Runnable() 依附于创建Handler的线程,
代码如下
在绝对的UI线程中打印线程ID:

System.out.println("UI Thread = " + Thread.currentThread().getId());  

下面在posdelayed中打印运行线程的ID:

new Handler().postDelayed(new Runnable() {  @Override  public void run() {  System.out.println("Handler Thread = " + Thread.currentThread().getId());  ImageUtil.deleteImageFromSDCard(imgPath);  }  
}, 3000);  

post?最后打印如下:

07-09 10:47:24.110 17026-17026/com.spd.sinoss I/System.out: UI Thread = 1  
07-09 10:47:27.111 17026-17026/com.spd.sinoss I/System.out: Handler Thread = 1  

可以看出来,它们两个程序都是运行在主线程中的。
方法的官方解释是:

The runnable will be run on the thread to which this handler is attached.

既是说,这个开启的runnable会在这个handler所依附线程中运行,而这个handler是在UI线程中创建的,所以
自然地依附在主线程中了。

postDelayed(new Runnable()) 而没有重新生成新的 New Thread()

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/59383.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息