当我离开我的应用程序(主页/后退按钮)时,尝试删除/销毁我的旧表面视图并创建一个新表面视图,以便在用户返回应用程序时“重新启动”应用程序。
我只有一个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;
}
答案 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生命周期。