展会信息港展会大全

Android 比 Timer 更好方法
来源:互联网   发布日期:2016-01-14 12:37:26   浏览:1232次  

导读:因为timer.schedule(task,5000) 是表示执行一次的任务。timer.schedule(task,1000,5000)表示 1 秒钟后开始 5 秒钟为周期 重复执行,更好的方法是通过下面的代码 (Handler加Runnable线程,更简洁)...

01

Timer timer = new Timer( );

02

03

TimerTask task = new TimerTask( ) {

04

public void run ( ) {

05

Message message = new Message( );

06

message.what = 1;

07

handler.sendMessage(message);

08

}

09

};

10

11

final Handler handler = new Handler( ) {

12

public void handleMessage(Message msg) {

13

switch (msg.what) {

14

case 1:

15

log.e("Timer","Timer");

16

update( );

17

break;

18

}

19

20

super.handleMessage(msg);

21

}

22

};

23

24

protected void onDestroy ( ) {

25

if (timer != null) {

26

timer.cancel( );

27

timer = null;

28

}

29

super.onDestroy( );

30

}

31

protected void onCreate (Bundle savedInstanceState) {

32

super.onCreate(savedInstanceState);

33

this.setContentView(R.layout.main);

34

timer.schedule(task,1000,5000);

35

}

最重要的一点是 timer.schedule(task,1000,5000),如果设置为 timer.schedule(task,5000)是不会工作的。

因为timer.schedule(task,5000) 是表示执行一次的任务。

timer.schedule(task,1000,5000)表示 1 秒钟后开始 5 秒钟为周期 重复执行,

更好的方法是通过下面的代码 (Handler加Runnable线程,更简洁)

01

private Handler handler = new Handler( );

02

03

private Runnable runnable = new Runnable( ) {

04

public void run ( ) {

05

update( );

06

07

handler.postDelayed(this,1000);

08

//postDelayed(this,1000)方法安排一个Runnable对象到主线程队列中

09

}

10

};

11

12

handler.postDelayed(runnable,1000); // 开始Timer

13

handler.removeCallbacks(runnable); //停止Timer

赞助本站

人工智能实验室

相关热词: Timer

AiLab云推荐
展开

热门栏目HotCates

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