所以我设法让我的程序在按下主页按钮时失去焦点,并在恢复时成功恢复活动,不幸的是我使用的方法会导致线程在屏幕发生变化时挂起,因为它不会失去焦点立即地。
已编辑——将 onResume 放入主 Activity
@Override
protected void onPause()
{
super.onPause();
synchronized (mPauseLock) {
mPaused = true;
}
return;
}
@Override
public void onResume() {
super.onResume();
synchronized (mPauseLock) {
mPaused = false;
mPauseLock.notifyAll();
}
}
public class ThreadClass extends Thread
{
boolean isRunning;
public void BeginThread()
{
if (mGameIsRunning) {
onResume();
}else{
if(isRunning)return;
isRunning=true;
start();
mGameIsRunning=true;
}
}
public void run()
{
Canvas canvas;
while(isRunning)
{
canvas=null;
try
{
canvas = canvasClass.surfaceHolder.lockCanvas(null);
synchronized (canvasClass.surfaceHolder)
{
//processClass.processGame();
canvasClass.onDraw(canvas);
}
}finally{
if(canvas!=null)
{
canvasClass.surfaceHolder.unlockCanvasAndPost(canvas);
}
}
synchronized (mPauseLock)
{
while (mPaused)
{
try
{
mPauseLock.wait();
} catch (InterruptedException e) {
}
}
}
}
}
}
必须更改什么以便在按 Home 时暂停活动并在按 Back 时将其抛出堆栈?同样如前所述,当屏幕方向改变时也会发生同样的问题。