你好我在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-24 21:34:40.869:E / AndroidRuntime(12393):致命异常:主要 09-24 21:34:40.869:E / AndroidRuntime(12393):java.lang.RuntimeException:无法创建服务com.example.find.your.friend.iith.updateService:java.lang.IllegalThreadStateException:线程已经启动。
你能告诉我我哪里错了吗?
答案 0 :(得分:0)
您无法启动已存在的线程。当while(true)
永久执行时,thr.start()
会一次又一次地被调用。尝试:
while (true) {
// Some code1
if(!thr.isAlive()) {
thr.start();
}
while(thr.isAlive()){}
//some code 2
}
答案 1 :(得分:0)
为什么不使用闹钟服务?这是解决问题的最佳方案。