使用重复方法创建服务

时间:2012-06-12 10:06:25

标签: android android-service

我正在尝试创建一个每隔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();  
    }
}

3 个答案:

答案 0 :(得分:1)

您不能将语句放在方法之外运行。将 while循环置于服务的onCreateonStartCommand方法中。保证在您的服务启动后调用这些方法。

要实现重复性任务,请使用HandlerThreadLooperHandler和处理程序的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中的代码