我在surfaceview中遇到一个问题。当我锁定手机时,我无法理解如何onPause / onResume。无论我做什么,锁定/解锁手机后线程都没有响应。
在活动中:
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
surfaceView.SurfaceView_OnResume();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
surfaceView.SurfaceView_OnPause();
}
在surfaceview
中 public void SurfaceView_OnResume() {
if (null != surfaceViewThread) {
surfaceViewThread.setRunning(true);
surfaceViewThread.notify();
}
}
public void MySurfaceView_OnPause() {
surfaceViewThread.setRunning(false);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
boolean retry = true;
myGameThread.setRunning(false);
while (retry) {
try {
myGameThread.join();
retry = false;
} catch (InterruptedException e) {
}
}
}
在帖子中:
public void setRunning(boolean run) {
runFlag = run;
}
答案 0 :(得分:0)
Thread.setRunning(boolean b)不在Android API中。 你可以在这里查看。 http://developer.android.com/reference/java/lang/Thread.html
如果我需要一个Thread,我更喜欢使用Runnable(接口),而不是Thread(Object)。
要控制我的Thread循环,我将设计我的方法:run()就像这样...
run(){
while(threadRun){
...//What you want to do in the thread.
while(threadPause){
}
}
}
布尔值:threadRun将在Activity.onDestroy()中变为false,或者您真正想要关闭该线程的任何其他时间。
布尔值:threadPause ...在Activity.onPause()中变为false,在Activity.onResume()中变为true。