Android 之 Handler 的使用(一)

      当用户点击一个按钮时如果执行的是一个常耗时操作的话,处理不好会导致系统假死,用户体验很差,而Android则更进一步,如果任意一个Acitivity没有响应5秒钟以上就会被强制关闭,因此我们需要另外起动一个线程来处理长耗时操作,而主线程则不受其影响,在耗时操作完结发送消息给主线程,主线程再做相应处理。那么线程之间的消息传递和异步处理用的就是Handler。

下面是一个简单从web服务器端下载MP3文件的例子:

public  class HandlerThreadTest  extends  Activity(){

      @Override

        protected void  onCreate(Bundle savedInstanceState){

               super.onCreate(savedInstanceState);

               setContentView(R.layout.main);

               //查看当前线程的ID

               System.out.println(Thread.currentThread().getName()+"---"+Thread.currentThread().getId());

               //HandlerThread对象,内部已经实现循环处理消息的功能
               HandlerThread handlerThread = new HandlerThread("handler-thread");

               handlerThread.start();              

              System.out.println(Thread.currentThread().getName()+"---"+Thread.currentThread().getId());
               //创建Handler
              MyHandler handler = new MyHandler(handlerThread.getLooper());
              //获取一个消息对象
              Message msg = handler.obtainMessage();
              msg.sendToTarget();

        }

}





public class MyHandler extends Handler{

      String urlPath="xxx";

       public MyHandler(Looper looper){

              super(looper);

        }

        @Override

        public void handleMessage(Message msg){

                  super.handleMessage(msg);

                   loadMusic(urlPath);

         }

         public void loadMusic(  String urlPath){

                    ........

         }

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值