Android Surfaceview线程无响应

时间:2012-08-07 08:27:01

标签: android multithreading surfaceview

我在surfaceview中遇到一个问题。当我锁定手机时,我无法理解如何onPause / onResume。无论我做什么,锁定/解锁手机后线程都没有响应。

在活动中:

@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();

    }

在surfaceview

    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;

    }

1 个答案:

答案 0 :(得分:0)

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

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

要控制我的Thread循环,我将设计我的方法:run()就像这样...

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

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

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