从主屏幕返回到正在运行的应用程序时的新surfaceview

时间:2014-06-15 13:12:22

标签: android android-activity surfaceview

当我离开我的应用程序(主页/后退按钮)时,尝试删除/销毁我的旧表面视图并创建一个新表面视图,以便在用户返回应用程序时“重新启动”应用程序。

我只有一个Activity(Launcher活动),所以我想我必须在onRestart()方法中做到这一点:

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

    AppSurfaceView mySV = new AppSurfaceView(this);
    setContentView(mySV);
}

但屏幕仍为黑色。

在第一次启动应用程序时(应用程序任务列表中没有进程),一切正常 - 继承了我的启动器活动的onCreate方法

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Remove title bar
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    //Remove notification bar
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    //Force Landscape
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    // making it full screen
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);



    AppSurfaceView mySV = new AppSurfaceView(this);
    setContentView(mySV);
}

修改

AppSurfaceView mySV;

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

    mySV = new AppSurfaveView(this);
    setContentView(mySV);
}

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

    mySV = null;

}

1 个答案:

答案 0 :(得分:0)

使用onResume和onPause回调而不是onRestart和onCreate。

AppSurfaceView mySV;

@Override
protected void onPause() {
    super.onPause();
    mySV = null;
}

@Override
protected void onResume() {
    super.onResume();
    mySV = new AppSurfaceView(this);
    setContentView(mySV);
}

此流程向您解释android Activity生命周期。

enter image description here