第一講-------------執行後臺耗時操作的封裝

         學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裏面執行。這兩個方法在每個用的地方執行的不一樣,所以抽象出來。需要用的時候只需要創建一個匿名內部類再實現以上兩個方法就可以了,示例可以參照小程序耗時操作示例


         

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章