Android:执行onPause后,按Back(和方向更改)会导致挂起

时间:2011-07-18 08:35:45

标签: android orientation back hang onpause

所以我设法让我的程序在按下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时被抛出堆栈?同样如上所述,当屏幕方向改变时会发生同样的问题。

1 个答案:

答案 0 :(得分:0)

为什么onResume在线程类中? 如果这是实际代码,请将其删除到活动类。 其余的代码看起来很好。