Android Framework 知识点
1. 四大组件
- Activity(活动)
- 是 Android 应用中最基本的组件,用于实现用户界面。一个 Activity 通常对应一个屏幕的内容。
- 有自己的生命周期,包括
onCreate
、onStart
、onResume
、onPause
、onStop
、onDestroy
等方法,开发者需要了解这些方法的调用时机,以便正确管理 Activity 的状态。 - 可以通过
Intent
进行启动和切换,Intent
可分为显式Intent
和隐式Intent
,分别用于明确指定启动的组件和根据Intent
过滤器匹配合适的组件。
- Service(服务)
- 用于在后台执行长时间运行的操作,不提供用户界面。例如,音乐播放服务、文件下载服务等。
- 有两种启动方式:
startService
和bindService
。startService
启动的服务会在后台一直运行,直到调用stopService
或自身调用stopSelf
;bindService
启动的服务与调用者绑定,调用者销毁时服务也会销毁。 - 可以使用
IntentService
,它是Service
的子类,内部使用HandlerThread
处理异步任务,任务完成后会自动停止。
- Broadcast Receiver(广播接收器)
- 用于接收系统或应用发出的广播消息。广播可以是系统广播(如开机广播、电池电量变化广播等),也可以是应用自定义广播。
- 注册方式有静态注册和动态注册。静态注册在
AndroidManifest.xml
中声明,应用未启动时也能接收广播;动态注册在代码中通过registerReceiver
方法注册,需要在合适的时机调用unregisterReceiver
方法取消注册。
- Content Provider(内容提供者)
- 用于在不同的应用之间共享数据。例如,联系人数据、短信数据等都是通过内容提供者来共享的。
- 可以通过
ContentResolver
来访问内容提供者提供的数据,ContentResolver
提供了query
、insert
、update
、delete
等方法来操作数据。
2. 系统服务
- Activity Manager Service(活动管理服务)
- 负责管理应用的 Activity 生命周期、任务栈和进程。它决定了哪个 Activity 应该显示在前台,如何处理 Activity 的启动、暂停、恢复和销毁等操作。
- Window Manager Service(窗口管理服务)
- 管理应用的窗口,包括窗口的创建、显示、隐藏、大小调整和层级关系等。它还处理触摸事件和键盘事件的分发。
- Package Manager Service(包管理服务)
- 负责应用的安装、卸载、更新和查询等操作。它维护了系统中所有应用的信息,包括应用的包名、版本号、权限等。
3. 资源管理
- 字符串资源:用于存储应用中的文本信息,方便实现多语言支持。可以在
strings.xml
文件中定义字符串资源,然后在代码或布局文件中通过@string/resource_name
引用。 - 布局资源:用于定义应用的界面布局。常见的布局文件有
LinearLayout
、RelativeLayout
、FrameLayout
等。可以在layout
目录下创建布局文件,然后在 Activity 中通过setContentView(R.layout.layout_name)
方法设置布局。 - 图片资源:用于存储应用中的图片文件,如图标、背景图等。可以根据不同的屏幕密度将图片放在不同的
drawable
目录下,系统会自动选择合适的图片显示。
4. 图形与动画
- View 体系:是 Android 中所有界面元素的基类,包括
TextView
、Button
、ImageView
等。开发者可以自定义View
来实现特殊的界面效果,需要重写onDraw
方法进行绘制。 - 动画框架:提供了补间动画(Tween Animation)、帧动画(Frame Animation)和属性动画(Property Animation)三种动画类型。补间动画通过对 View 的平移、旋转、缩放和透明度等属性进行变换来实现动画效果;帧动画通过依次显示一系列图片来实现动画效果;属性动画可以对任何对象的属性进行动画操作。
5. 网络通信
- HttpURLConnection:是 Java 提供的一个简单的 HTTP 通信类,在 Android 中也可以使用。可以通过它发送 HTTP 请求并获取响应数据。
- OkHttp:是一个高效的 HTTP 客户端库,在 Android 开发中被广泛使用。它支持 HTTP/2 和 SPDY 协议,提供了异步请求、拦截器、缓存等功能。
- Retrofit:是一个基于 OkHttp 的 RESTful API 客户端库,它可以将 HTTP 请求抽象成 Java 接口,通过注解的方式定义请求的方法和参数,大大简化了网络请求的代码。
Android Framework 应用场景
1. 开发常规 Android 应用
- 无论是简单的工具类应用,还是复杂的社交、电商应用,都需要使用 Android Framework 提供的四大组件来构建界面和实现功能。例如,社交应用中的聊天界面可以使用 Activity 实现,消息推送功能可以使用 Service 和 Broadcast Receiver 实现,用户信息的存储和共享可以使用 Content Provider 实现。
2. 系统定制与开发
- 设备厂商在定制 Android 系统时,需要深入了解 Android Framework。例如,定制系统的桌面 launcher、通知栏、设置菜单等,需要对 Framework 中的窗口管理、资源管理等模块进行修改和扩展。
3. 开发系统级应用
- 如文件管理器、任务管理器、安全卫士等系统级应用,需要直接与 Android Framework 中的系统服务进行交互。例如,文件管理器需要使用存储管理服务来访问和操作文件系统,任务管理器需要使用 Activity Manager Service 来管理应用的进程和任务。
4. 跨应用数据共享与交互
- 当多个应用需要共享数据或进行交互时,就需要使用 Content Provider 和 Broadcast Receiver。例如,一个音乐播放器应用可以通过 Content Provider 共享音乐文件信息,其他应用可以通过 ContentResolver 访问这些信息;同时,音乐播放器应用可以通过 Broadcast Receiver 接收其他应用发送的播放控制指令。