Android-服务创建错误

Android-服务创建错误,android,android-service,Android,Android Service,你好,我正在用android创建一个服务。在服务中,我希望我的代码每5分钟定期运行一次。我用一根线来做同样的事情 下面是我的代码 @Override public void onCreate() { super.onCreate(); Toast.makeText(this, "Service created ...", Toast.LENGTH_LONG).show(); Thread thr = new Thread() { public void run(

你好,我正在用android创建一个服务。在服务中,我希望我的代码每5分钟定期运行一次。我用一根线来做同样的事情

下面是我的代码

@Override
public void onCreate() {
    super.onCreate();
    Toast.makeText(this, "Service created ...", Toast.LENGTH_LONG).show();

    Thread thr = new Thread() {
    public void run() {
        try {
            sleep(20000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{}
        }
   };
    while (true) {

        // Some code1

        thr.start();
        while(thr.isAlive()){}

        //some code 2
    }

}
我得到以下错误

09-2421:34:40.869:E/AndroidRuntime(12393):致命异常:main 09-24 21:34:40.869:E/AndroidRuntime(12393):java.lang.RuntimeException:无法创建服务com.example.find.your.friend.iith.updateService:java.lang.IllegalThreadStateException:线程已启动


你能告诉我哪里出错了吗?

你不能启动一个已经激活的线程。当(true)永远执行时,
thr.start()
会被反复调用。尝试:

while (true) {

    // Some code1

    if(!thr.isAlive()) {
        thr.start();
    }
    while(thr.isAlive()){}

    //some code 2
}

你为什么不使用报警服务?这是解决您的问题的最佳解决方案。

更重要的是,您不能启动以前启动过的线程,即使它已停止。它将抛出一个非法的ThreadStateException还有什么方法可以让我的while循环“等待一段时间”,然后执行其余的代码。