Activity的四种创建模式
1.standard 模式
这是默认模式,无需设置,每次激活Activity时都会创建Activity实例,并放入任务栈中。相当于入栈,按back键返回到前一个Activity相当于退栈。
2.singleTop 模式
如果在任务的栈顶正好存在该Activity的实例,就重用该实例(会调用实例的 onNewIntent()),否则就会创建新的实例并放入栈顶
3.singleTask 模式
如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的 onNewIntent() )。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移出栈。如果栈中不存在该实例,将会创建新的实例放入栈中。
4.singleInstance 模式
在一个新栈中创建该Activity的实例,并让多个应用共享该栈中的该Activity实例。
Activity保存状态
1.onSaveInstanceState(),onRestoreInstanceState(Bundle)
在onSaveInstanceState保存数据,在onRestoreInstanceState中获取数据
onSaveInstanceState()方法,调用将发生在onPause()或onStop()方法之前
2.在onPause向数据库插入数据
设置全屏
在setContentView之前
// 设置全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 去除标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
改变activity窗口的大小
Window w=getWindow();
w.setBackgroundDrawableResource(resourceID);//设置窗口背景
WindowManager.LayoutParams layoutParams = w.getAttributes();
layoutParams.height = 200;
layoutParams.width= 200;
layoutParams.gravity = Gravity.TOP;
layoutParams.x=50;//距离Gravity属性的距离
layoutParams.y=50;
layoutParams.alpha = 0.5;//0:完全透明,1:不透明
w.setAttributes(layoutParams);
消除横竖屏影响
将Activity的android:configChanges属性为orientation|screenSize或者orientation|screenSize|keyboardHidden
附:
当系统因为内存不足(优先级更高的应用需要内存,请看上图红框)要回收Activity占用的资源时,Activity在执行完onPause()方法后就会被销毁,有些生命周期方法onStop(),onDestory()就不会执行。当再回到此Activity时,是从onCreate方法开始执行。
网友评论