android 通过handler实现异步处理

public class HandlethreadtestActivity extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        HandlerThread myhandlethread=new HandlerThread("my_handler1");// 1.创建一个handlerthread 线程对象 my_handler  是这个线程对象的名称

        

        myhandlethread.start();//2. 启动线程

        MyHandle myhandle=new MyHandle(myhandlethread.getLooper());//4.绑定到创建的线程上

        Message msg=myhandle.obtainMessage();//5. 获取到msg对象 

       Bundle b=new Bundle();

       b.putInt("age", 12);

       b.putString("name", "super_cj");

       msg.setData(b);		//在msg对象上绑定数据

       msg.sendToTarget(); //把msg发送到绑定的线程上

    }

    class MyHandle extends Handler //3. 创建一个handler的内部类 

    {

    	public MyHandle()

    	{

    		

    	}

    	public MyHandle(Looper looper)//重载myhandle  让父类Handler 把myhandlerthread 加入到线程队列

    	{

    		super(looper);

    	}

		@Override

		public void handleMessage(Message msg) {//在线程里要做的事  就是你想异步处理的代码

			// TODO Auto-generated method stub

			super.handleMessage(msg);

			

			Bundle bb=msg.getData();//获得msg 传过来的数据

			int age=bb.getInt("age");

			String name=bb.getString("name");

			Toast.makeText(HandlethreadtestActivity.this, String.valueOf(age), Toast.LENGTH_LONG).show();

			try

			{

				Thread.sleep(5000);//暂停线程5秒

				Toast.makeText(HandlethreadtestActivity.this, name, Toast.LENGTH_LONG).show();

			}

			catch(Exception e)

			{

				

			}

			

		}

    	

    }

}

我也是初学 自己写下来忘记的时候来看看 呵呵 有错误的地方请帮忙指出 谢谢!

你可能感兴趣的:(android)