我正在尝试创建一个每隔5秒做一次事情的服务。
问题是我放while(true)
它给我一个错误的那一刻。
我想这是不允许的。如果是这样,那么实现重复方法的更好方法是什么?
public class repService extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
while(true){
Thread timer = new Thread(){
public void run(){
try {
sleep(5000);
// do something
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// do something
}
}
};
timer.start();
}
}
答案 0 :(得分:1)
您不能将语句放在方法之外运行。将 while循环置于服务的onCreate
或onStartCommand
方法中。保证在您的服务启动后调用这些方法。
要实现重复性任务,请使用HandlerThread
,Looper
,Handler
和处理程序的postDelayed
方法来充分利用它。
答案 1 :(得分:1)
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// do something
}
}, 0, 5000);
答案 2 :(得分:0)
which every 5 seconds does something
您可以使用Timer().schedule
每5秒重复一次任务。
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//Do your task here
}
}, System.currentTimeMillis(), 5000);
如果您需要修改或播放UI部分,请确保编写而不是runOnUiThread
中的代码