歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 多線程及多線程中更新控件

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

日期:2017/3/1 10:48:32   编辑:Linux編程
在Android 多線程中要注意的一點是, 在多線程中不能夠更新界面的控件, 因為控件的更新只能由主線程來完成。

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

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

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

  1. public Handler handler = new Handler()
  2. {
  3. @Override
  4. public void handleMessage(Message msg)
  5. {
  6. switch (msg.what)
  7. {
  8. case 0:
  9. {
  10. //取出參數更新控件
  11. textX.setText(msg.getData().getString("x"));
  12. }
  13. break;
  14. default:
  15. break;
  16. }
  17. super.handleMessage(msg);
  18. }
  19. };

下面是多線程的部分, 如果不需要更新控件, 可以直接參考這段寫多線程。

  1. //多線程
  2. private Runnable accRunnable = new Runnable()
  3. {
  4. //多線程運行方法
  5. public void run()
  6. {
  7. int x = 0;
  8. while(true)
  9. {
  10. //異常抓取
  11. try
  12. {
  13. //該部分是傳參並更新控件
  14. Message msg = new Message();
  15. msg.what = 0;
  16. Bundle bundle = new Bundle();
  17. bundle.putString("x", x + "");
  18. msg.setData(bundle);
  19. //發送消息到Handler
  20. handler.sendMessage(msg);
  21. x++;
  22. } catch (InterruptedException e)
  23. {
  24. e.printStackTrace();
  25. }
  26. }
  27. }
  28. };

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

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

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

  1. public void onCreate(Bundle savedInstanceState)
  2. {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.main);
  5. //創建一個新的線程並運行.
  6. accThread = new Thread(accRunnable);
  7. accThread.start();
  8. }

那麼多線程就完成了。

Copyright © Linux教程網 All Rights Reserved