我的应用程序在后台运行了一个Android服务,该服务运行多个线程,其中一个用于运行30分钟的命令。
Thread InternetThread = new Thread() {
public void run() {
while (true){
try {
Thread.sleep(1800000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("test", "We are running");
runCommand();
}
}
};
然而,我发现这个代码并不总是每30分钟运行一次,有时可能在运行之间长达一个小时,从不少于30分钟但可以更多。我认为这与Android所追求的服务有关? 但我并不确定,因为我对Android服务和线程的理解有限。
希望有人可以帮助确保“runCommand()”确实每隔30分钟运行一次。
答案 0 :(得分:0)
这个过程可能会冻结,试试这个:
Thread InternetThread = new Thread() {
public void run() {
long endtime = 0;
while (true) {
endTime = System.currentTimeMillis() + 1800000;
while(System.currentTimeMillis() < endTime) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Log.i("test", "We are running");
runCommand();
}
}
};