第一讲-------------执行后台耗时操作的封装

         学android的都知道,android是不能在主线程里面执行耗时操作的,解决方法也有很多种。下面我介绍一种熟悉java的人比较快接受的一种方式。

         分三步

         1、先在线程里执行耗时操作。

         2、执行完,不管耗时操作里面出现什么问题,都要发送消息给handler。

         3、handler接收到消息后,去执行相应的UI。

         好了,先贴代码先

public abstract class CommonHandle
{
    private static final String THREAD_NAME   = "dataprocess_thread";
    protected static final int  UPDATE_UI       = 0;
    protected static final int  INVALIDEUSER  = 3;

    Handler messageHandler = new Handler()
                           {
                               @Override
                               public void handleMessage(Message msg)
                               {
                                   super.handleMessage(msg);
                                   switch (msg.what)
                                   {
                                   case UPDATE_UI:
                                       try
                                       {
                                           updateUI();
                                       }
                                       catch (Exception e)
                                       {
                                    	   
                                       }
                                       break;
                                   default:
                                       break;
                                   }

                               }
                           };

    public void start()
    {
        new Thread(THREAD_NAME)
        {
            public void run()
            {
                try
                {
                    handleData();
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                finally
                {
                    Message.obtain(messageHandler, UPDATE_UI).sendToTarget();
                }
            };
        }.start();
    }

    public abstract void handleData() throws  Exception;

    public abstract void updateUI();
}

在这里,我把它写成一个通用抽象类,耗时操作在handleData函数里面执行,更新UI的操作放在updateUI里面执行。这两个方法在每个用的地方执行的不一样,所以抽象出来。需要用的时候只需要创建一个匿名内部类再实现以上两个方法就可以了,示例可以参照小程序 耗时操作示例


         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值