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

知识点
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 = 1
07-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线程中创建的,所以
自然地依附在主线程中了。


你可能感兴趣的:(线程相关)