Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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 SurfaceHolder或创建新线程是否会影响活动生命周期?_Android_Runnable_Android Lifecycle_Onresume_Surfaceholder - Fatal编程技术网

Android SurfaceHolder或创建新线程是否会影响活动生命周期?

Android SurfaceHolder或创建新线程是否会影响活动生命周期?,android,runnable,android-lifecycle,onresume,surfaceholder,Android,Runnable,Android Lifecycle,Onresume,Surfaceholder,我正在创建一个需要线程的应用程序。当我测试生命周期时,我得到了一个奇怪的结果。当我从eclipse运行应用程序时,所有调用都正确-onCreate然后onResume。当我按下手机上的home(主页)按钮时,会呼叫暂停。然而,当我从手机上重新启动时,Resume从未被调用。这是否意味着我的线程没有被创建并重新启动?以下是我的课程: public class RenderView extends SurfaceView implements Runnable { Thread thread

我正在创建一个需要线程的应用程序。当我测试生命周期时,我得到了一个奇怪的结果。当我从eclipse运行应用程序时,所有调用都正确-onCreate然后onResume。当我按下手机上的home(主页)按钮时,会呼叫暂停。然而,当我从手机上重新启动时,Resume从未被调用。这是否意味着我的线程没有被创建并重新启动?以下是我的课程:

public class RenderView extends SurfaceView implements Runnable {
    Thread thread = null;
    SurfaceHolder holder;
    boolean running = false;

    Bitmap frameBuffer;

    public RenderView(Context context, Bitmap frameBuffer) {
        super(context);
        holder = getHolder();
        this.frameBuffer = frameBuffer;
    }

    @Override
    public void run() {
        while(running) {
            if(!holder.getSurface().isValid()) {
                continue;
            }
            Canvas canvas = holder.lockCanvas();
            canvas.drawARGB(255, 150, 150, 10);
            holder.unlockCanvasAndPost(canvas);
        }
    }

    public void pause() {
        running = false;
        while(true) {
            try {
                thread.join();
            } catch(InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public void resume() {
        running = true;
        thread = new Thread(this);
        thread.start();
    }
}

public class GameHandler extends Activity {
    RenderView view;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("Game Handler", "onCreate called");
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                            WindowManager.LayoutParams.FLAG_FULLSCREEN);

        boolean isLandscape = this.getResources().getConfiguration().orientation ==
                Configuration.ORIENTATION_LANDSCAPE;
        int frameBufferWidth = isLandscape ? 1280 : 800;
        int frameBufferHeight = isLandscape ? 800: 1280;

        Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth, frameBufferHeight, Bitmap.Config.RGB_565);
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        float  scaleX = (float) frameBufferWidth / metrics.widthPixels;
        float scaleY = (float)  frameBufferHeight / metrics.heightPixels;

        view = new RenderView(this, frameBuffer);

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.d("GameHandler ", "OnResume Called");
        view.resume();
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.d("GameHandler ", "onPaused Called");
        view.pause();
    }
}

请问手机上运行的是什么版本的Android?我运行的是api级别19