Android四大组件-Activity

533 阅读2分钟

这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

Android 的四大组件有 Activity、Service、Broadcase receiver、Content provider

 Activity

Activity是用户和应用的交互窗口,显示控件、视图,并且可以监听用户的事件,做出响应。

1) 生命周期:

  onCreate() → onStart() → onResume() → Activity running → onPause() → onStop() → onDestory()

onCreate():Activity被创建的时候调用,一些初始化操作可以在这里完成

onStart():Activity由不可见变为可见的时候调用

onResume():Activity已经可见,并且可以和用户进行交互

onPause():系统准备去启动或者恢复另外Activity的时候调用

onStop():Activity 由可见变为完全不可见

onDestory():Activity 即将被销毁

2) 生命周期遇到的问题:

(1) 用户从A,跳转到B,假设B全部遮挡住了A:

A.onPause() → B.onCreate() → B.onStart() → B.onResume() → A.onStop()

(2) 此时如果点击Back键:

B.onPause() → A.onRestart() → A.onStart() → A.onResume() → B.onStop() → B.onDestory()

(3) 如果按下Back键,系统回到桌面:

A.onPause() → A.onStop() → A.onDestory()

(4) 如果按下Home键,系统返回桌面

A.onPause() → A.onStop()

3) Activity的启动模式

任务栈(Task):Android系统采用栈结构来管理应用程序运行过程中所启动的Activity,即任务栈

Activity的启动模式有四种:standard、singleTop、singleTask、singleInstance

(1) standard:系统默认启动模式,每次启动一个Activity,都会创建一个实例,无论这个实例是否已经被创建

(2) singleTop:如果新Activity位于栈顶,不会重新创建;如果新Activity已经存在但不位于栈顶,仍会创建新的Activity

(3) singleTask:只要Activity在一个栈中存在,多次启动这个Activity都不会重新创建实例,而是将这个Activity上面的Activity全部出栈,直到这个Activity位于栈顶。

(4) singleInstance:要求创建的Activity只能单独位于一个任务栈中,并且这个任务栈中只允许有一个实例存在

(5) Activity常见的Flags

FLAG_ACTIVITY_NEW_TASK:为Activity指定“singleTask”启动模式

FLAG_ACTIVITY_SINGLE_TOP:为Activity指定“singleTop”启动模式

FLAG_ACTIVITY_CLEAR_TOP:有此标志位的Activity,当它启动时,在同一个任务栈中所有位于它上面的Activity都要出栈。若该Activity为standard启动模式,那么它自身也会出栈,系统会重新创建这个Activity的实例放入栈顶。根据前面的内容可知,singleTask启动模式默认具有此标记位的效果