展会信息港展会大全

Android 多线程及多线程中更新控件
来源:互联网   发布日期:2016-01-13 22:10:23   浏览:1444次  

导读:在Android 多线程中要注意的一点是, 在多线程中不能够更新界面的控件, 因为控件的更新只能由主线程来完成。但是我们可以通过Handler 这个对象来对主线程中的控件进行更新。在多线程中如果想更新主线程的控......

在Android 多线程中要注意的一点是, 在多线程中不能够更新界面的控件, 因为控件的更新只能由主线程来完成。

但是我们可以通过Handler 这个对象来对主线程中的控件进行更新。

在多线程中如果想更新主线程的控件, 需要向主线程的Handler对象发送一个消息及参数, 让更新在该对象方法中处理。

首先我们要在主Activity中定义一个Handler对象做为成员变量。

01

public Handler handler = new Handler()

02

{

03

@Override

04

public void handleMessage(Message msg)

05

{

06

switch (msg.what)

07

{

08

case 0:

09

{

10

//取出参数更新控件

11

textX.setText(msg.getData().getString("x"));

12

}

13

break;

14

default:

15

break;

16

}

17

super.handleMessage(msg);

18

}

19

20

};

下面是多线程的部分, 如果不需要更新控件, 可以直接参考这段写多线程。

01

//多线程

02

private Runnable accRunnable = new Runnable()

03

{

04

//多线程运行方法

05

public void run()

06

{

07

int x = 0;

08

while(true)

09

{

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

};

多线程方法写完后, 我们还需要在要启动它的地方添加方法。

这里就在程序启动时启动线程吧。

这里需要先定义一个成员变量 ThreadaccThread;

1

public void onCreate(Bundle savedInstanceState)

2

{

3

super.onCreate(savedInstanceState);

4

setContentView(R.layout.main);

5

6

//创建一个新的线程并运行.

7

accThread = new Thread(accRunnable);

8

accThread.start();

9

}

那么多线程就完成了。

赞助本站

人工智能实验室

相关热词: 多线程 控件

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港