Android 多線程及多線程中更新控件

fmms 13年前發布 | 41K 次閱讀 Android Android開發 移動開發

在Android 多線程中要注意的一點是, 在多線程中不能夠更新界面的控件, 因為控件的更新只能由主線程來完成。

但是我們可以通過Handler 這個對象來對主線程中的控件進行更新。

在多線程中如果想更新主線程的控件, 需要向主線程的Handler對象發送一個消息及參數, 讓更新在該對象方法中處理。

首先我們要在主Activity中定義一個Handler對象做為成員變量。

public Handler handler = new Handler()
{
    @Override
    public void handleMessage(Message msg)
    {
        switch (msg.what)
        {
        case 0:
            {
                //取出參數更新控件
                textX.setText(msg.getData().getString("x"));  
            }
            break;
        default:
            break;
        }
        super.handleMessage(msg);
    }

};
下面是多線程的部分, 如果不需要更新控件, 可以直接參考這段寫多線程。 
//多線程
private Runnable accRunnable = new Runnable()
{
    //多線程運行方法
    public void run()
    {
        int x = 0;
        while(true)
        {
            //異常抓取
            try
            {
                //該部分是傳參并更新控件
                Message msg = new Message();
                msg.what = 0;
                Bundle bundle = new Bundle();
                bundle.putString("x", x + "");
                msg.setData(bundle);
                //發送消息到Handler
                handler.sendMessage(msg);
                x++;
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }
};

多線程方法寫完后, 我們還需要在要啟動它的地方添加方法。

這里就在程序啟動時啟動線程吧。

這里需要先定義一個成員變量 Thread  accThread;

public void onCreate(Bundle savedInstanceState)
{   
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //創建一個新的線程并運行.
    accThread = new Thread(accRunnable);
    accThread.start();
}

那么多線程就完成了。

文章出處:http://blog.csdn.net/knowheart/article/details/7033763

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!