1.Activity的启停和结束
从当前页面跳转到新页面:startActivity(new Intent(原页面.this,目标页面.class));
从当前页面回到上一个页面相当于关闭页面:finish();
2.Activity的生命周期
onCreate:创建活动,把页面布局加载进内存,进入初始状态;
onStart:开始活动,把活动页面显示在屏幕上,进入就绪状态;
onResume:恢复活动进入活跃状态,能够与用户交互,如点击输入;
onPause:暂停活动,页面进入暂停状态,用户无法交互;
onStop:停止活动,此活动页面将不在屏幕上显示;
onDestroy:销毁活动,此时回收活动占用的资源,把页面从内存中清楚掉;
onRestart:重启活动,处于停止状态的活动如果想重新开启,无需onCreate重复创建,而是走onRestart的重启过程;
onNewIntent:重复已有的活动实例;当一个activity已经启动过,并且存在当前应用的activity任务栈中,启动模式为singleTask,singleInstance或singleTop(此时已经在任务栈顶端),那么启动或回到这个activity的时候,不会创建新的实例,也就是不会执行OnCreate方法,而是执行onNewIntent方法。
3.Activity的启动模式
1.在清单文件AndroidManifest中设置:android:launchMode="standard"
-
默认启动模式:standard,启动的activity会依次按照启动顺序被依次压入Task栈中;
-
栈顶复用模式:singleTop,如果栈顶activity是要新建的activity,那么就不会创建新的activity;
-
栈内复用模式:singleTask,如果栈内存在目标activity实例,则将task内对应的activity实力之上的所有activity弹出,并将对应activity置于栈顶,获得焦点;
-
全局唯一模式:singleInstance,为目标activity创建一个新的Task栈,并让目标activity获得焦点,如果已经创建过目标activity,则不会创建新的task,而是直接唤醒创建过的activity;
2.在java代码中通过Intent动态设置:Intent.setFlags();
Intent类的启动标志 |
说明 |
Intent.FLAG_ACTIVITY_NEW_TASK |
类似于standard,不同处在,如果原来不存在活动栈,会创建一个新栈 |
Intent.FLAG_ACTIVITY_SINGLE_TOP |
等同于singleTop |
Intent.FLAG_ACTIVITY_CLEAR_TOP |
类似于singleTask,但是singleTask采用onNewIntent方法,而FLAG_ACTIVITY_CLEAR_TOP采取先调用onDestroy再调用onCreate来创建新任务 |
Intent.FLAG_ACTIVITY_NO_HISTORY |
与standard类似,但是不保存新启动的活动实例,这样下次无论以何种方式再启动该实例,也要走standard模式的完整流程 |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
跳转新页面时,栈中原有实例都被清空;需要结合FLAG_ACTIVITY_NEW_TASK使用,即setFlags方法参数为“ Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK” |
示例:
public class JumpFirstActivity extends AppCompatActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_jump_first); Button b1=findViewById(R.id.b1); b1.setOnClickListener(this); } @Override public void onClick(View view) { Intent i1=new Intent(this, JumpSecondActivity.class); i1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i1); } }
4.在活动之间传递消息
4.1组成部分
元素名称 |
设置方法 |
说明与用途 |
---|---|---|
Component |
setComponent |
组件,指定意图的来源与目标 |
Action |
SetAction |
动作,指定意图的动作行为 |
Data |
setData |
即uri,指定动作要操作的数据路径 |
Category |
addCat |