安卓系统中 关于计时器的实现方法Word文档格式.docx
《安卓系统中 关于计时器的实现方法Word文档格式.docx》由会员分享,可在线阅读,更多相关《安卓系统中 关于计时器的实现方法Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
![安卓系统中 关于计时器的实现方法Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/24/0b7c9fef-fed7-4905-a529-2cbe24db120a/0b7c9fef-fed7-4905-a529-2cbe24db120a1.gif)
recLen
=
11;
4.
TextView
txtView;
5.
Timer
timer
new
Timer();
6.
7.
public
void
onCreate(Bundle
savedInstanceState){
8.
super.onCreate(savedInstanceState);
9.
10.
setContentView(R.layout.timertask);
11.
txtView
(TextView)findViewById(R.id.txttime);
12.
13.
timer.schedule(task,
1000,
1000);
//
timeTask
14.
}
15.
16.
TimerTask
task
TimerTask()
{
17.
@Override
18.
run()
19.
20.
runOnUiThread(new
Runnable()
UI
thread
21.
22.
23.
recLen--;
24.
txtView.setText("
"
+recLen);
25.
if(recLen
<
0){
26.
timer.cancel();
27.
txtView.setVisibility(View.GONE);
28.
29.
30.
});
31.
32.
};
33.}
方法二
TimerTask与Handler(不用Timer的改进型)
final
Handler
handler
Handler(){
handleMessage(Message
msg){
switch
(msg.what)
case
1:
33.
Message
message
Message();
34.
message.what
1;
35.
handler.sendMessage(message);
36.
37.
38.}
方法三
Handler与Message(不用TimerTask)
savedInstanceState)
handler.obtainMessage
(1);
handler.sendMessageDelayed(message,
handle
+
recLen);
>
send
}else{
super.handleMessage(msg);
34.}
方法四
Handler与Thread(不占用UI线程)
0;
Thread(new
MyThread()).start();
start
recLen++;
MyThread
implements
Runnable{
run(){
while(true){
try{
Thread.sleep(1000);
sleep
1000ms
}catch
(Exception
e)
38.
39.}
方法五
Handler与Runnable(最简单型)
handler.postDelayed(runnable,
Handler();
Runnable
runnable
handler.postDelayed(this,
23.}
计时与倒计时
方法1,方法2和方法3,都是倒计时
方法4,方法5,都是计时
计时和倒计时,都可使用上述方法实现(代码稍加改动)
UI线程比较
方法1,方法2和方法3,都是在UI线程实现的计时;
方法4和方法5,是另开Runnable线程实现计时
实现方式比较
方法1,采用的是Java实现,即Timer和TimerTask方式;
其它四种方法,都采用了Handler消息处理
推荐使用
如果对UI线程交互要求不很高,可以选择方法2和方法3
如果考虑到UI线程阻塞,严重影响到用户体验,推荐使用方法4,另起线程单独用于计时和其它的逻辑处理
方法5,综合了前几种方法的优点,是最简的