Android: нажатие Back (и изменение ориентации) приводит к зависанию после реализации onPause

1

Таким образом, мне удается заставить мою программу потерять фокус при нажатии кнопки "Домой" и успешно вернуть активность при возобновлении, к сожалению, метод, который я использую, заставляет Thread зависать, когда экран изменяется в том смысле, что он не теряет фокус немедленно.

EDITTED - Размещено onResume в основную деятельность

@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) {

                    }
                }
            }
        }           
    }
}

Что нужно изменить, чтобы действие приостанавливалось при нажатии "Домой" и выбрасывалось из стека при нажатии "Назад"? Также, как объясняется, такая же проблема возникает, когда меняется ориентация экрана.

Теги:
orientation
hang
back
onpause

1 ответ

0

Почему onResume находится внутри класса потоков? Если это фактический код, удалите его в класс активности. Остальная часть кода выглядит нормально.

  • 0
    Ну, вначале я был просто на уроке активности, я просто кричал на ветер, и это, кажется, не имеет значения в любом случае. По-прежнему зависает на экране изменения, кроме нажатия Главная / пауза. РЕДАКТИРОВАТЬ: обновленный код

Ещё вопросы

Сообщество Overcoder
Наверх
Меню