一个android Timer,为什么只执行了一次

2025-05-03 07:57:05
推荐回答(4个)
回答(1):

通过 timer.schedule执行的?那注意参数写法, timer.schedule(task,1000,5000),表示1秒后开始,5秒为周期,循环执行, timer.schedule(task,5000),表示5秒后执行一次结束。

回答(2):

一个android Timer,为什么只”相关的解决方案进行了整理,用户详细问题包括:
public void getPaisong() {
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1: {
// 初始化搜索模块,注册事件监听
mSearch = new MKSearch();
mSearch.init(app.mBMapMan, new MyMKSearchListener());
jiexi();
cou++;
Toast.makeText(
BMapApiDemoApp.mDemoApp.getApplicationContext(),
"执行了"+cou+"一次!", Toast.LENGTH_LONG).show();
}
break;
}
super.handleMessage(msg);
}
};
TimerTask task = new TimerTask() {
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};

timer = new Timer(true);
timer.schedule(task, 5000); // 延时1000ms后执行,1000ms执行一次
// timer.cancel(); //退出计时器
}

我在oncreate方法里直接调用了getPaisong()方法,可是只显示cou=1,具体解决方案如下:

解决方案1:
好吧 原来是
timer.schedule(task,1000,,5000); // 延时1000ms后执行,1000ms执行一次
解决方案2:
呵,开始接触这个类的时候我也迷茫了一把
解决方案3:
要重复的话,就用repeate
解决方案4:
timer.schedule(task, 5000); 两个参数的schedule 就只是执行一次吧。
要用三个参数的schedule。
解决方案5:
我去,我也遇到这个问题。。。

回答(3):

  • //delay 为long类型:从现在起过delay毫秒执行一次。    

  • timer.schedule(task, delay);     

  • //delay为long,period为long:从现在起过delay毫秒以后,每隔period毫秒执行一次。   

  • timer.schedule(task, delay,period);   

回答(4):

public void getPaisong() {
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1: {
// 初始化搜索模块,注册事件监听
mSearch = new MKSearch();
mSearch.init(app.mBMapMan, new MyMKSearchListener());
jiexi();
cou++;
Toast.makeText(
BMapApiDemoApp.mDemoApp.getApplicationContext(),
"执行了"+cou+"一次!", Toast.LENGTH_LONG).show();
}
break;
}
super.handleMessage(msg);
}
};
TimerTask task = new TimerTask() {
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};

timer = new Timer(true);
timer.schedule(task, 5000); // 延时1000ms后执行,1000ms执行一次
// timer.cancel(); //退出计时器
}

我在oncreate方法里直接调用了getPaisong()方法,可是只显示cou=1