Android线程在待机状态下暂停
我试图用一个线程编写一个简单的活动,该线程每N秒在文本文件中写入一个值Android线程在待机状态下暂停,android,sleep,thread-sleep,Android,Sleep,Thread Sleep,我试图用一个线程编写一个简单的活动,该线程每N秒在文本文件中写入一个值 public void run() { isrunning = true; int cont=0; try { while (isrunning) { es.writeSD("- THREAD:" + cont, true); Thread.sleep(1000); es.writeSD("- THREAD
public void run() {
isrunning = true;
int cont=0;
try {
while (isrunning)
{
es.writeSD("- THREAD:" + cont, true);
Thread.sleep(1000);
es.writeSD("- THREAD - sending: " + cont,true);
cont++;
}
}
catch (InterruptedException e) {
es.writeSD("- THREAD - InterruptedException: " + e.getMessage(),true);
}
catch (Exception e) {
es.scriviSD("- THREAD - Exception: " + e.getMessage(),true);
}
}
问题是,在我运行活动几分钟后,手机处于待机状态,线程有时会停止更长的时间,甚至几分钟
在Run()中,我必须先写入文件,然后再休眠N秒
public void run() {
isrunning = true;
int cont=0;
try {
while (isrunning)
{
es.writeSD("- THREAD:" + cont, true);
Thread.sleep(1000);
es.writeSD("- THREAD - sending: " + cont,true);
cont++;
}
}
catch (InterruptedException e) {
es.writeSD("- THREAD - InterruptedException: " + e.getMessage(),true);
}
catch (Exception e) {
es.scriviSD("- THREAD - Exception: " + e.getMessage(),true);
}
}
这是带有时间戳的日志
20130911T154448:-螺纹:36
20130911T154449:-线程发送:36
20130911T154449:-线程:37
20130911T154652:-线程发送:37
20130911T154652:-螺纹:38
20130911T154656:-线程发送:38您需要强制设备保持清醒。但要小心,这会很快耗尽电池电量
PowerManager
的WakeLock
是您所需要的:
启动线程时,acquire()
WakeLock,release()
public void run() {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
wl.acquire();
isrunning = true;
int cont=0;
try {
while (isrunning) {
es.writeSD("- THREAD:" + cont, true);
Thread.sleep(1000);
es.writeSD("- THREAD - sending: " + cont,true);
cont++;
}
} catch (InterruptedException e) {
es.writeSD("- THREAD - InterruptedException: " + e.getMessage(),true);
} catch (Exception e) {
es.scriviSD("- THREAD - Exception: " + e.getMessage(),true);
} finally {
wl.release();
}
}