- Activity:负责用户界面的展示和用户交互
- Service服务:不需要和用户交互,负责后台任务,比如播放音乐,socket长连接
- BroadcastReceiver广播接收者:负责页面间通信,系统和APP通信,APP和APP通信,比如监听网络连接状态变化,就是通过广播接收者来实现的
- ContentProvider:内容数据存取,常用于APP进行数据共享,跨进程数据存储等...比如读取相册,读取联系人,都是ContentProvider来实现的
一.Activity必知必会
Activity是一种能够显示用户界面的组件,用户通过和Activity交互完成相关操作.一个应用中可以包含0或多个Activity,但不包含任何Activity的应用程序是无法被客户看见的.
- 入门
Activity创建与AndoridManifeest.xml注册
必须声明才可以使用,注意重写的onCreate()方法是一个参数的
Activity生命周期
- onCreate(): 该方法会在Activity第一次创建时进行调用,在这个方法中通常会做Activity初始化相关的操作,例如:加载布局,绑定事件等
- onStart(): 改方法会在Activity由不可见变为可见的时候调用,但是还不能跟用户进行交互.
- onResume(): 表示Activity已经启动完成,进入到前台,可以同用户进行交互了.
- onPause(): 这个方法在系统准备去启动另一个Activity的时候调用.可以在这里释放系统资源,动画的停止,不宜在此做耗时操作.点返回按键的时候,应用从后台切到前台
- onStop(): 当Activity不可见的时候就掉此方法.需要在这里释放全部用户使用不到的资源.可以做较重量级的工作,如对注册广播的解注册,对一些状态数据的存储.此时Activity还不会被销毁掉,而是保持在内存中,但随时都会被回收.通常发生在启动另一个Activity或切换到后台时.
- onDestroy(): Activity即将被销毁.此时必须主动释放掉所有占用资源.
- onRestart(): 这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了(APP切换到后台进入onStop(),再切换到前台的时候触发onRestart()方法)
Activity的两类启动方式
在Android中我们可以通过两种方式来启动一个新的Activity,分别为显示启动和隐式启动
- 显示启动:通过包名来启动,写法如下:
声明周期执行如下:
lateinit关键字,意思是延迟初始化,就不要求初始化给赋值了
- 隐式启动:并不明确指定要启动哪个Activity,而是通过指定action和category的信息,让系统去分析这个Intent,并找出合适的Activity去启动.
- 系统提供的一些常见的Activity
- 进阶
-
Activity的四种启动模式
-
Activity生命周期原理与切面编程
-
Activity启动的原理
-
Activity动态统一路由
-
如何启动其他程序的Activity
-
Activity跟window,view之间的关系
-
横竖屏切换的Activity生命周期变化
-
二.Fragment
使用Fragment可以把页面结构划分为几个部分.Fragment不能单独使用,他需要嵌套在Activity中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期影响,比如Activity被销毁了,他也会跟随销毁.一个Activity可以嵌套多个Fragment.
Fragment生命周期
- onAttach():当Fragment被添加到Activity中会回调,只会被调用一次.
- onCreate():创建Fragment的回调.只会被调用一次
- onCreateeVieew():每次创建,绘制该Fragment的View组件时回调,会将显示的View返回
- onActivityCreate():当Fragment所在的Activity启动完成后回调
- onStart():启动Fragment时被回调
- onResume():恢复Fragment时被回调,onStart()方法后一定回调onResume()方法onStart可见onResume后才能交互
在Activity中动态添加Fragment
生命周期,当activity中只有一个fragment的时候不会执行onHiddenChanged的方法,只有多个才会执行