1

所以我设法让我的程序在按下主页按钮时失去焦点,并在恢复时成功恢复活动,不幸的是我使用的方法会导致线程在屏幕发生变化时挂起,因为它不会失去焦点立即地。

已编辑——将 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 时将其抛出堆栈?同样如前所述,当屏幕方向改变时也会发生同样的问题。

4

1 回答 1

0

为什么 onResume 在线程类里面?如果那是实际代码,请将其删除到活动类中。其余代码看起来不错。

于 2011-07-18T08:46:40.487 回答