1

我在surfaceview 中有一个线程问题。当我锁定手机时,我无法理解如何开启暂停/开启恢复。无论我做什么,锁定/解锁手机后线程都不会响应。

在活动中:

@Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        surfaceView.SurfaceView_OnResume();
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        surfaceView.SurfaceView_OnPause();

    }

在表面视图中

    public void SurfaceView_OnResume() {
            if (null != surfaceViewThread) {

                surfaceViewThread.setRunning(true);
                surfaceViewThread.notify();
            }

        }

        public void MySurfaceView_OnPause() {           
            surfaceViewThread.setRunning(false);

        }

@Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        // TODO Auto-generated method stub
        boolean retry = true;
        myGameThread.setRunning(false);
        while (retry) {
            try {
                myGameThread.join();
                retry = false;
            } catch (InterruptedException e) {
            }
        }
    }

在线程中:

public void setRunning(boolean run) {
        runFlag = run;

    }
4

1 回答 1

0

Thread.setRunning(boolean b) 不在 Android API 中。你可以在这里查看。http://developer.android.com/reference/java/lang/Thread.html

如果我需要一个线程,我更喜欢使用 Runnable(Interface),而不是 Thread(Object)。

为了控制我的线程周期,我将设计我的方法:run() 像这样......

run(){
    while(threadRun){
            ...//What you want to do in the thread.
            while(threadPause){
            }
    }
}

Boolean:threadRun 将在 Activity.onDestroy() 中或您真正想要关闭线程的任何其他时间变为 false。

Boolean:threadPause ... 在 Activity.onPause() 中变为 false,在 Activity.onResume() 中变为 true。

于 2016-01-20T17:36:37.260 回答