Activity相关知识总结

activity的生命周期

四种活动状态
  1. 运行状态 返回栈的栈顶 可见 处于活跃状态
  2. 暂停状态 不处于栈顶 可见部分 也是活动状态,出现于栈顶界面不会完全覆盖屏幕的情况
  3. 停止状态 不处于栈顶 完全不可见 但是状态和成员变量依然会被保存,除非被回收
  4. 销毁状态 在返回栈中被移除 系统首先回收这种状态的活动
生命周期中的7个回调方法

Activity相关知识总结_第1张图片

事件举例:

A启动B
A -> onPause()
B -> onCreate() -> onStart() -> onResume()
A -> onStop() 若是未完全遮挡则不会调用这个方法
B回退A
B -> onPause()
A -> onRestart() -> onStart() -> onResume() (若A被回收时为 onCreate() -> onStart() -> onResume())
B -> onStop() -> onDestroy()
熄屏
onPause() -> onStop()
亮屏
onRestart() -> onStart() -> onResume()
同时启动多个activity
创建时只会出现最后一个activity的生命周期,不会出现前面activity的onSaveInstanceState()方法
回退的时候会出现前面activity的onStart()方法,但是也并不会执行onRestoreInstanceState()

activity的四种启动模式

在AndroidManifest.xml文件的标签中添加launchMode属性
利用getTaskId()方法可以获取返回栈的id

  1. standard 默认的启动模式,每次启动同一个activity都会创建一个实例添加到回退栈中
  2. singleTop 若此activity已处于栈顶,则再次启动此活动会直接使用栈顶的活动,而不会再次重新创建,只会有一个实例,但若不是位于栈顶,则会重新创建
    但是会触发onPause()和onResume()方法
  3. singleTask 若启动但activity在栈中已存在,则使其上面的activity出栈,让这个activity位于栈顶
  4. singleInstance 会重新创建一个回退栈来管理此activity,且也是只会创建唯一的一个实例
    TaskAffinity属性用于指定启动这个activity任务栈的名称
    杀掉此程序的进程
    android.os.Process.killProcess(android.os.Process.myPid())
activity隐式启动

需要设置intent-filter
一个activity可以有多个intent-filter
一个intent-filter中可以有多个action和多个category,但至少需要有一个
在activity中,给intent设置匹配规则时,action只能有一个,category可以有多个,但都默认是intent-filter的子集才能匹配
当没有设置category时默认为android.intent.category.DEFAULT
当intent-filter中设置了时
只要activity中action和category都为intent-filter中的子集即可匹配成功
但若未设置这个category,则activity需要设置componentName才能匹配
intent.component = ComponentName(“com.jiangker.helloworld”, “com.jiangker.activitylife.activity.LaunchActivity”)
第一个参数为appId也是应用的包名,第二个参数是所启动的activity的全路径
另外,若是需要可以被第三方的App启动,则需要在xml文件中加入android:exported=“true”

你可能感兴趣的:(Java,安卓开发之路)