Android Handler的使用(2)

来源:互联网 发布:微信美女诱导支付源码 编辑:程序博客网 时间:2024/05/23 00:09

在Activity中调用handler.post();方法启动的线程实质是知识执行了当前Activity中的Run()方法,并不是另外启动了一个线程。

下面我们来验证:

Test 1

package com.example.clover.handlertest;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.os.Handler;public class MainActivity extends ActionBarActivity {          private Handler handler=new Handler();          @Override          protected void onCreate(Bundle savedInstanceState) {                    super.onCreate(savedInstanceState);                    handler.post(r);                    setContentView(R.layout.activity_main);                   // Thread t=new Thread(r);                   // t.start();                    System.out.println("activity-->" + Thread.currentThread().getId());                    System.out.println("activityname-->" + Thread.currentThread().getId());          }          Runnable r=new Runnable() {                    @Override                    public void run() {                              System.out.println("handler-->"+Thread.currentThread().getId());                              System.out.println("handlername-->"+Thread.currentThread().getName());                              try {                                        Thread.sleep(10000);                              } catch (InterruptedException e) {                                        e.printStackTrace();                              }                    }          };}

运行结果,且Activity 10s之后才显示在界面中
这里写图片描述


Test 2

package com.example.clover.handlertest;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.os.Handler;public class MainActivity extends ActionBarActivity {          private Handler handler=new Handler();          @Override          protected void onCreate(Bundle savedInstanceState) {                    super.onCreate(savedInstanceState);                    //handler.post(r);                    setContentView(R.layout.activity_main);                    Thread t=new Thread(r);                    t.start();                    System.out.println("activity-->" + Thread.currentThread().getId());                    System.out.println("activityname-->" + Thread.currentThread().getId());          }          Runnable r=new Runnable() {                    @Override                    public void run() {                              System.out.println("handler-->"+Thread.currentThread().getId());                              System.out.println("handlername-->"+Thread.currentThread().getName());                              try {                                        Thread.sleep(10000);                              } catch (InterruptedException e) {                                        e.printStackTrace();                              }                    }          };}

运行结果
这里写图片描述

0 0