0
嗨,
在我的应用程序即时尝试使用Thread.sleep(100)来暂停我的线程,而其后台为了使用较少的CPU,但它冻结时我打开它。
我意识到onResume
在我重新打开应用程序时未被调用。使用Thread.sleep()暂停和恢复应用程序
任何想法为什么?
public void onPause() {
pause = true;
Log.d("mSTATE","THREADPAUSE");
}
public void onResume() {
pause = false;
running = true;
Log.d("mSTATE","THREADRESUME");
}
public void run() {
while(running){
while(pause && running){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
while (!pause && running) {
Canvas c = null;
try {
c = sHolder.lockCanvas(null);
synchronized (sHolder) {
doDraw(c);
powerUps();
}
} finally {
if (c != null) {
sHolder.unlockCanvasAndPost(c);
}
}
}
}
Log.d("mState","EndofRun");
}
运行处于surfaceview线程,这样不应该是被罚款? – MikeT
表面视图线程是一个UI线程。如果你用另一个线程中断它,你只需冻结UI。 –
你会如何推荐我实施暂停和恢复? – MikeT