Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:执行onPause后,按Back(和方向更改)会导致挂起_Android_Orientation_Back_Freeze_Onpause - Fatal编程技术网

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

Android 安卓:执行onPause后,按Back(和方向更改)会导致挂起,android,orientation,back,freeze,onpause,Android,Orientation,Back,Freeze,Onpause,因此,当按下Home(主页)按钮时,我设法使程序失去焦点,并在恢复时成功地使活动恢复,不幸的是,当屏幕发生变化时,我使用的方法会导致线程挂起,而不会立即失去焦点 编辑--放在简历的主活动中 @Override protected void onPause() { super.onPause(); synchronized (mPauseLock) { mPaused = true; } return; } @Override public void

因此,当按下Home(主页)按钮时,我设法使程序失去焦点,并在恢复时成功地使活动恢复,不幸的是,当屏幕发生变化时,我使用的方法会导致线程挂起,而不会立即失去焦点

编辑--放在简历的主活动中

@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键时从堆栈中抛出?同样如前所述,当屏幕方向改变时也会发生同样的问题。

为什么onResume在thread类中? 如果这是实际代码,请将其删除到activity类中。
其余的代码看起来不错。

起初它是在活动类中,我只是随风叫喊,这两种方式似乎都没有什么区别。除按Home/暂停外,屏幕更改时仍挂起。编辑:更新代码