您的位置:首页 > 移动开发 > Android开发

android之postDelayed是否运行在主线程中解答

2016-07-09 10:57 357 查看
知识点
1、postDelayde是否运行在主线程中?答案是肯定的。
代码如下
在绝对的UI线程中打印线程ID:
System.out.println("-=-=-=>>xianchengid00000 = " + Thread.currentThread().getId());
下面在posdelayed中打印运行线程的ID:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
System.out.println("-=-=-=>>xianchengid11111 = " + Thread.currentThread().getId());
ImageUtil.deleteImageFromSDCard(imgPath);
}
}, 3000);
最后打印如下:
07-09 10:47:24.110 17026-17026/com.spd.sinoss I/System.out: -=-=-=>>xianchengid00000 = 107-09 10:47:27.111 17026-17026/com.spd.sinoss I/System.out: -=-=-=>>xianchengid11111 = 1
可以看出来,它们两个程序都是运行在主线程中的。
方法的官方解释是:
The runnable will be run on the thread to which this handler is attached.
既是说,这个开启的runnable会在这个handler所依附线程中运行,而这个handler是在UI线程中创建的,所以
自然地依附在主线程中了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息