目录
生命周期
常见场景
进程优先级
横竖屏
1、android:configChanges设置orientation或orientation|keyboardHidden或不填
2、android:configChanges设置有orientation|screenSize
启动模式
1、standard
2、singleTop
3、singleTask
4、singleInstance
Activity通信
1、Activity到Activity
2、Activity到Service(案例)
3、Activity到Fragment
onCreate():Activity第一次启动时执行;
onStart():Activity正在被启动;
onResume():Activity可见并能进行交互;
onPause():Activity可见但失去焦点的时候执行;
onStop():Activity不可见;
onRestart():Activity没有被销毁的时候重新启动;
onDestroy():Activity被销毁;
Activity启动:onCreate()->onStart()->onResume()
跳转其他界面:onPause()->onStop()
返回Activity:onRestart()->onStart()->onResume()
退出Activity:onPause()->onStop()->onDestroy()
1、前台进程:与用户正在交互的Activity所在进程;
2、可见进程:Activity可见但没有在前台所在进程;
3、服务进程:Activity在后台启动Service所在进程;
4、后台进程:Activity完全处于后台所在进程;
5、空进程:没有任何Activity存在的进程,最先被回收;
android:screenOrientation属性:
portrait:始终竖屏显示
landscape:始终横屏显示
android:configChanges属性:
orientation:消除横竖屏影响
keyboardHidden:消除键盘影响
screenSize:消除屏幕大小影响
横竖屏切换生命周期:onPause()->onSaveInstanceState()->onStop()->onDestroy()->onCreate()->onStart()->onRestoreInstanceState()->onResume()
横竖屏切换不走生命周期,回调onConfigurationChanged()
系统默认启动模式,每次激活都会创建Activity放入任务栈;
使用场景:
哪个任务栈Activity启动就在哪个任务栈;
栈顶复用模式,只要栈顶没有这个Activity就创建放入栈顶,否则复用,同时onNewIntent()被回调;
使用场景:
在当前Activity,同时收到通知,点击通知再打开当前Activity,为防止重复打开可使用singleTop重写onNewIntent();其他程序调用singleTop的Activity,5.0之前与standard一样在调用者栈中,5.0之后放入新栈。
单例实例模式,只要栈中有Activity就将其提到栈顶复用,上方Activity出栈,同时回调onNewIntent();
使用场景:
一般用于首页,调用singleTask的Activity时会把其上的Activity出栈。
单独任务栈实例模式,只要所有栈中有Activity就能被复用,否则单独创建任务栈放这个Activity;
使用场景(案例):
A1->A2(singleInstance),Home返回首页后再点击应用图标显示A1,A2在另一个单独任务栈,应用图标对应主任务栈(taskAffinity);
startActivity启动A1->A2->A3(singleInstance)->A4,back返回到A2,再back返回A1,再back才返回A3;A1->A2->A3(singleInstance startActivityForResult)->A4,5.0以前返回顺序A2,A1,A3,5.0之后A3,A2,A1;
1.1 Intent,startActivity(intent)
1.2 类静态变量
1.3 全局变量,单独一个静态变量类
2.1 Intent,startService(intent)和stopService(intent),Service#onStartCommand获取数据
2.2 bindService,用ServiceConnection接口
3.1 Bundle,Fragment#setArguments(bundle)
3.2 Fragment中定义方法,Activity直接调用