通過Handler實現先顯示進度條,後臺進行數據處理,處理結束後取消進度條

自己對Handler使用還不熟練,想寫一個小程序,在指定的時間週期打印指定的次數的LOG信息。

記錄下自己諮詢到的一些方法,方便以後來查。


初步想法是用Handler,先發送一個開始的消息,顯示進度條,然後發送打印log的消息,通過一個全局變量count來判斷是否達到了次數,如果沒達到,則在固定的delay時間再發送一個打印log的信息,如果達到了,則把進度條取消。


在OnClickListener發佈開始的消息

class ClickListener implements OnClickListener
    {

        @Override
        public void onClick(View v) {
            switch(v.getId())
            {
                case R.id.send:
                    
                    count = 0;
                    mHandler.sendEmptyMessage(0);
                    
                    break;
            }
            
        }
     }


在handler中進行消息處理

Handler mHandler = new Handler(){

        @Override
        public void dispatchMessage(Message msg) {
            // TODO Auto-generated method stub
            super.dispatchMessage(msg);
            
            switch (msg.what) {
                case 0:
                    pd.setTitle("打印LOG");
                    pd.setMessage("正在打印,請稍後...");
                    pd.show();
                    mHandler.sendEmptyMessage(1);                    
                    break;
                case 1:
                    if(count < mCount)
                    {                    
                        Log.d("carter", "打印log");
                        mHandler.sendEmptyMessageDelayed(1, mPeriod);
                        count++;
                    }
                    else
                    {
                        if(pd!=null && pd.isShowing())
                            pd.dismiss();
                    }
                    break;
            }
        }
        
    };


發佈了36 篇原創文章 · 獲贊 4 · 訪問量 48萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章