码迷,mamicode.com
首页 > 移动开发 > 详细

Android中Handler的使用

时间:2015-11-23 18:52:14      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉。Handler就是把这些功能放到一个单独的线程里执行,与Activity互不影响。


import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

public class HandleActivity extends Activity {
    private ImageView imageView = null;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case 0:
//你的操作
break; case 1:
//你的造作
break; } super.handleMessage(msg); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); thread.start(); } Thread thread = new Thread(new Runnable() { public void run() { Message message = new Message();

       message.what = 1;
       message.obj = obj;

       handler.sendMessage(message);

        }
    });

}


也可以直接写在一个方法内实现

private void getRealTimeBills(final String date)
{
  final Handler handler = new Handler()

  {
    @Override
    public void handleMessage(Message msg)

    {
      if(msg.what == 1)
      {
        realTimeBills = (RealTimeBills) msg.obj;
      }
    }
  };
  new Thread(){
  @Override
  public void run()

  {
    Message message = new Message();
    try

    {
      realTimeBills = context.getRealTimeBills(date);
      if(realTimeBills.getResultMessage().OK())
      {
        message.what = 1;
        message.obj = realTimeBills;
      }

    catch (Exception e)

    {
      e.printStackTrace();
    }
    handler.sendMessage(message);
   }
  }.start();
}

 

 

Android中Handler的使用

标签:

原文地址:http://www.cnblogs.com/guop/p/4989112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!