【Android】Activity知识点

目录

生命周期

常见场景

进程优先级

横竖屏

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:消除屏幕大小影响

1、android:configChanges设置orientation或orientation|keyboardHidden或不填

横竖屏切换生命周期:onPause()->onSaveInstanceState()->onStop()->onDestroy()->onCreate()->onStart()->onRestoreInstanceState()->onResume()

2、android:configChanges设置有orientation|screenSize

横竖屏切换不走生命周期,回调onConfigurationChanged()

启动模式

1、standard

系统默认启动模式,每次激活都会创建Activity放入任务栈;

使用场景:

哪个任务栈Activity启动就在哪个任务栈;

2、singleTop

栈顶复用模式,只要栈顶没有这个Activity就创建放入栈顶,否则复用,同时onNewIntent()被回调;

使用场景:

在当前Activity,同时收到通知,点击通知再打开当前Activity,为防止重复打开可使用singleTop重写onNewIntent();其他程序调用singleTop的Activity,5.0之前与standard一样在调用者栈中,5.0之后放入新栈。

3、singleTask

单例实例模式,只要栈中有Activity就将其提到栈顶复用,上方Activity出栈,同时回调onNewIntent();

使用场景:

一般用于首页,调用singleTask的Activity时会把其上的Activity出栈。

4、singleInstance

单独任务栈实例模式,只要所有栈中有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;

Activity通信

1、Activity到Activity

1.1 Intent,startActivity(intent)

1.2 类静态变量

1.3 全局变量,单独一个静态变量类

2、Activity到Service(案例

2.1 Intent,startService(intent)和stopService(intent),Service#onStartCommand获取数据

2.2 bindService,用ServiceConnection接口

3、Activity到Fragment

3.1 Bundle,Fragment#setArguments(bundle)

3.2 Fragment中定义方法,Activity直接调用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章