[Android] Thread (1)

摘要:[Android] Multi-Thread

方法1 建立Runable物件,並實作要在背景的方法。


new Thread(new Runnable() {
    @Override
    public void run() {
        //可以執行長時間的工作
        int i=0;
        do{
            i++;
        }while(i>100);

        mHandler.post(new Runnable() {
            public void run() {
                _ProBar.setProgress(100);
                }
            });

        }

 }).start();

方法2 建立繼承Thread的類別,並實作Run 方法已執行長時間運算。


public class DoLengthyWork extends Thread {

    private Handler mHandler;
    private ProgressBar mProBar;

    public void run () {
        Calendar begin = Calendar.getInstance();
        do {
            Calendar now = Calendar.getInstance();

                final int iDiffSec = 60 * (now.get(Calendar.MINUTE) - begin.get(Calendar.MINUTE)) +
                now.get(Calendar.SECOND) - begin.get(Calendar.SECOND);


                if (iDiffSec * 2 > 100) {
                        mHandler.post(new Runnable() {
                            public void run() {
                                mProBar.setProgress(100);
                            }
                        });

                break;
            }

            mHandler.post(new Runnable() {
                public void run() {
                    mProBar.setProgress(iDiffSec * 10);
                }
            });

            
        } while (true);
    }

    void setProgressBar(ProgressBar proBar) {
        mProBar = proBar;
    }

    void setHandler(Handler h) {
        mHandler = h;
    }
}

 


 protected void onCreate(Bundle savedInstanceState) {
        // 從資源類別R中取得介面元件
        ProgressBar proBar = (ProgressBar)findViewById(R.id.proBar2);

        DoLengthyWork work = new DoLengthyWork();
        work.setHandler(mHandler);
        work.setProgressBar(proBar);
        work.start();
}