所以我设法让我的程序在按下Home按钮时失去焦点并在恢复时成功恢复活动,遗憾的是我正在使用的方法导致Thread在屏幕发生变化时挂起立即失去焦点。
EDITTED - 将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时被抛出堆栈?同样如上所述,当屏幕方向改变时会发生同样的问题。
答案 0 :(得分:0)
为什么onResume在线程类中? 如果这是实际代码,请将其删除到活动类。 其余的代码看起来很好。