Android adb 简单UI自动化测试
- 格式:pptx
- 大小:10.08 MB
- 文档页数:30
Android移动端自动化测试框架UIAutomator2入门随着智能手机的普及,移动应用也越来越受到欢迎。
移动端应用相对于传统的Web应用或桌面应用,有自身独特的测试需求。
在这种情况下,自动化测试框架成为了移动端测试的必备工具。
本文将介绍Android移动端自动化测试框架UIAutomator2的基础知识和使用方法。
一、UIAutomator2介绍UIAutomator2是Android平台上的一个自动化测试框架,它的作用是为测试人员提供一种自动化测试手段,以验证移动应用的正确性、稳定性和性能。
UIAutomator2可以模拟用户在移动应用上的各种操作,包括点击、滑动、输入等等,以实现对应用的全面自动化测试。
二、UIAutomator2的环境搭建要使用UIAutomator2,我们首先需要构建相应的测试环境。
具体步骤如下:1. 安装Android SDK,并配置环境变量。
2. 下载UIAutomator2的源代码。
3. 根据源代码中的README文档,进行所需的编译和安装。
三、UIAutomator2的使用1. 创建测试脚本使用UIAutomator2进行自动化测试需要编写相应的测试脚本。
测试脚本是由Java编写的,并可以使用Android Studio进行编辑和调试。
下面是一个简单的测试脚本:```import androidx.test.uiautomator.By;import androidx.test.uiautomator.UiDevice;public class MyTest {public static void main(String[] args) throws Exception {UiDevice device = UiDevice.getInstance();device.pressHome();device.findObject(By.text("Chrome")).click();device.findObject(By.res("com.android.chrome:id/search_box_text")).c lick();device.findObject(By.res("com.android.chrome:id/search_box_text")).s etText("UIAutomator2");device.pressEnter();}}```这个脚本的功能是启动Chrome浏览器,并在浏览器中搜索“UIAutomator2”。
自动化常用命令
自动化常用命令包括:
1. adb pm:包管理,用于清理特定包缓存数据、权限,强制关掉app。
2. adb shell pm clear 包名:清理特定包缓存数据、权限。
3. adb shell am start -n 包名:重新启动app,但不清除缓存。
4. dumpsys:获取系统/app的性能数据。
5. uiautomator:获得app的页面结构,进行自动化测试。
6. adb shell uiautomator dump:在手机上生成当前app所有的控件
界面到一个xml文件,可以被拉取下来。
7. input:完成简单的自动化指令,如模拟点击事件等。
8. test条件[条件]:用于数值比较和字符串比较的表达式。
9. 逻辑表达式:如命令1&&命令2 (1 成功则执行2)和命令1||命
令2 (1 失败则执行2)等。
10. 文件表达式:-f 判断是否是文件,-d 判断是否是目录等。
如需更多自动化常用命令,建议咨询专业人士获取准确信息。
Android测试中的自动化工具评测与选择随着移动应用开发的快速发展,Android平台成为了最受欢迎的移动操作系统之一。
然而,随之而来的是对移动应用质量的不断追求,这要求开发人员在应用发布之前进行全面而准确的测试。
为了提高效率和质量,Android测试中的自动化工具成为开发人员的首选。
本文将对几种常用的Android自动化测试工具进行评测,并提供选择的建议。
1. AppiumAppium是一种开源的移动应用自动化测试工具,支持多种操作系统(包括Android)。
它使用WebDriver协议进行测试,并支持各种编程语言(如Java、Python和Ruby)。
Appium的优点在于可以在真实设备和模拟器上运行测试,且支持多种操作系统版本。
然而,Appium需要开发人员具备较强的编程能力,并且在配置和安装方面较为复杂。
2. EspressoEspresso是由Google开发的Android自动化测试工具,专注于用户界面(UI)测试。
它提供了一套简洁明了的API,可以方便地编写和运行UI测试。
Espresso的优点在于速度快、稳定性高,且无需涉及设备配置或者系统安装。
然而,在处理复杂场景或者多个应用程序之间的交互时,Espresso的能力相对较弱。
3. UI AutomatorUI Automator也是由Google开发的自动化测试框架,用于执行跨应用程序的功能测试。
它可以与Android系统进行交互,并模拟用户在多个应用程序之间的操作。
UI Automator的优点在于支持多应用程序测试和跨应用程序交互,适用于复杂的测试场景。
然而,使用UI Automator需要对Android框架有一定的了解,并且测试脚本编写较为繁琐。
4. RobotiumRobotium是一种Android自动化测试工具,专注于功能和用户界面的测试。
它提供了易于使用的API,能够模拟用户在应用程序中的操作和事件。
Robotium的优点在于容易上手、功能强大,可用于测试各种应用程序场景。
Android自动化测试工具的选择与比较Android应用程序的自动化测试在软件开发过程中扮演着重要的角色。
为了保证应用程序的质量和稳定性,开发人员需要选择一个适合他们需求的自动化测试工具。
在本文中,我们将比较几种常见的Android自动化测试工具,并为您提供有关如何选择适合您的项目的建议。
一、UI AutomatorUI Automator是由Google开发的一个基于黑盒测试的自动化测试框架。
它允许开发人员跨应用程序的用户界面元素进行测试。
UI Automator支持Android 4.1及以上的设备,并提供了丰富的API来与设备进行交互。
它的优点是可以通过模拟用户的真实操作来测试应用程序的性能和用户体验。
然而,UI Automator的学习曲线较陡峭,对于新手来说可能需要一些时间来熟悉其使用方法。
二、EspressoEspresso是一个由Google开发的轻量级自动化测试框架,旨在简化Android应用程序的UI测试。
Espresso的主要特点是易于使用和快速执行测试。
它提供了简洁的API用于编写可读性强的测试代码,并且能够处理异步操作和UI事件。
Espresso还集成了多种延时和等待机制,以便于开发人员进行稳定的测试。
然而,Espresso的适用范围相对较窄,主要针对应用程序的单个Activity进行测试。
三、AppiumAppium是一个开源的跨平台自动化测试框架,支持Android和iOS平台。
它使用WebDriver协议来驱动真实的设备和模拟器,可以以多种编程语言编写测试脚本。
Appium的优点是支持网页应用测试和混合应用测试,可以覆盖更广泛的测试场景。
然而,Appium的配置和设置相对复杂,对于初学者来说可能需要一些技术知识和经验。
四、Robot FrameworkRobot Framework是一个通用的自动化测试框架,支持多种应用程序和系统的测试。
它具有可扩展性、易用性和灵活性的特点。
Airtest简单上⼿讲解Airtest是⽹易开发的⼿机UI界⾯⾃动化测试⼯具,它原本的⽬的是通过所见即所得,截图点击等等功能,简化⼿机App图形界⾯测试代码编写⼯作。
安装和使⽤Airtest运⾏以后的界⾯如下图所⽰。
连接⼿机以Android⼿机为例,由于Airtest会通过adb命令安装两个辅助App到⼿机上,再⽤adb命令通过控制这两个辅助App进⽽控制⼿机,因此⾸先需要确保⼿机的adb调试功能是打开的,并允许通过adb命令安装App到⼿机上。
启动Airtest以后,把Android⼿机连接到电脑上,点击下图⽅框中的refresh ADB:此时在Airtest界⾯右上⾓应该能够看到⼿机的信息,如下图所⽰。
(本⼈以mumu模拟器为例)点击connect按钮,此时可以在界⾯上看到⼿机的界⾯,并且当你⼿动操作⼿机屏幕时,Airtest中的⼿机画⾯实时更新。
如下图所⽰。
对于某些⼿机,例如⼩⽶,在第⼀次使⽤Airtest时,请注意⼿机上将会弹出提⽰,询问你是否允许安装App,此时需要点击允许按钮。
打开雪球股票app先通过⼀个简单的例⼦,来看看如何快速上⼿Airtest,稍后再来详解。
例如我现在想使⽤电脑控制⼿机,打开雪球股票app。
此时,点击下图中⽅框框中的touch按钮:此时,把⿏标移动到Airtest右边的⼿机屏幕区域,⿏标会变成⼗字型。
在雪球股票app图标的左上⾓按下⿏标左键不放,并拖到雪球股票app 右下⾓松开⿏标。
此时请注意中间代码区域发⽣了什么变化,如下图所⽰。
好了。
以上就是你需要使⽤电脑打开雪球股票app所要进⾏的全部操作。
点击上⽅⼯具栏中的三⾓形图标,运⾏代码,如下图所⽰。
代码运⾏完成以后,雪球股票app被打开了。
界⾯介绍在有了⼀个直观的使⽤以后,我们再来介绍⼀下Airtest的界⾯,将会更加有针对性。
Airtest的界⾯如下图所⽰。
这⾥,我把Airtest分成了A-F6个区域,他们的功能如下:A区:常⽤操作功能区B区:Python代码编写区C区:运⾏⽇志区D区:⼿机屏幕区E区:App页⾯布局信息查看区F区:⼯具栏A区是常⽤的基于图像识别的屏幕操作功能,例如:touch: 点击屏幕元素swipe: 滑动屏幕exists: 判断屏幕元素是否存在text: 在输⼊框中输⼊⽂字snashot: 截图……⼀般来说,是点击A区⾥⾯的某⼀个功能,然后在D区屏幕上进⾏框选操作,B区就会⾃动⽣成相应的操作代码。
uiautomator原理UiAutomator是Android提供的一个自动化测试框架,用于对Android设备和应用程序进行功能测试。
UiAutomator使用Java编写,可以在模拟器或实际设备上运行。
UiAutomator的原理主要包括以下几个方面:1. Android框架层支持:UiAutomator通过与Android系统进行交互来执行各种测试任务。
它使用了Android的AccessibilityService和Instrumentation等服务和接口,进而获取当前屏幕上的UI元素、模拟用户输入和相应事件等。
2. 底层命令执行:UiAutomator通过adb命令执行以运行测试任务。
用户可以通过adb命令启动UiAutomator服务,并在设备或模拟器上运行特定的测试脚本。
adb命令可以在电脑上实现与设备的通信,并发送一系列指令来实现测试功能。
3. UI元素识别:UiAutomator可以通过遍历视图层次结构来查找需要测试的UI元素。
它可以通过特定的属性或控件的文本内容等来识别UI元素。
这样,UiAutomator可以模拟用户的交互行为,如点击按钮、滑动屏幕、输入文本等。
4. 用户输入模拟:UiAutomator可以模拟用户在设备上的各种输入行为,如触摸、滑动、按键等。
通过模拟这些用户输入行为,UiAutomator可以对应用程序的不同交互场景进行测试,并验证应用程序的正确性。
5. 事件记录和注入:UiAutomator可以记录用户与应用程序的交互事件,并将它们转换为测试用例。
在测试期间,UiAutomator可以将这些事件注入到应用程序中,并验证应用程序对这些事件的正确响应。
总结起来,UiAutomator的原理是通过与Android系统的交互,获取并识别应用程序的UI元素,模拟用户输入和事件触发,然后通过底层命令执行相应的操作,实现对应用程序的自动化测试。
通过UiAutomator,可以提高测试效率和覆盖范围,并确保应用程序在不同场景下的正确响应。
uiautomator2+weditor之前呢⼀直⽤的python+appium做安卓⾃动化测试,最近看⼤佬的博客,发现了⼜⼀个神器,简单介绍⼀下哈:iautomator是Google提供的⽤来做安卓⾃动化测试的⼀个Java库。
功能很强,可以对第三⽅App进⾏测试,获取屏幕上任意⼀个APP的任意⼀个控件属性,并对其进⾏任意操作,但有两个缺点:1. 测试脚本只能使⽤Java语⾔2. 测试脚本必须每次被上传到设备上运⾏。
1.安装uiautomator2E:\python36\Scripts>pip3 install -U uiautomator22.adb连上⼿机确保⼿机和电脑能连得上,使⽤adb devices查看链接状态,adb相关的环境本篇就不多说了,搞android测试的都知道1.E:\python36\Scripts>adb devices2.List of devices attached3.adb server version (31) doesn't match this client (40); killing...4.* daemon started successfully5.emulator-5554 device安装atx-agentpython -m uiautomator2 init1.E:\python36\Scripts>python -m uiautomator2 init2.[D 190716 23:34:53 __main__:28] use cache directory: C:\Users\dell\.uiautomator23.Namespace(serial=None, server=None, subparser='init') init4.[I 190716 23:34:53 __main__:88] >>> Initial device AdbDevice(serial=emulator-5554)5.[I 190716 23:34:53 __main__:172] Install minicap, minitouch6.[Kminitouch |################################| 33.5K / 33.5K7.[?25h[D 190716 23:34:56 __main__:157] Push https:///openatx/stf-binaries/raw/master/node_modules/minitouch-prebuilt/prebuilt/x86/bin/minitouch -> /data/local/tmp/minitouch:07558.[I 190716 23:34:56 __main__:176] abi:x86 seems to be android emulator, skip install minicap9.[I 190716 23:34:56 __main__:182] Install com.github.uiautomator, com.github.uiautomator.test10.[D 190716 23:34:56 __main__:100] Shell: ('pm', 'uninstall', 'com.github.uiautomator')11.[D 190716 23:34:56 __main__:100] Shell: ('pm', 'uninstall', 'com.github.uiautomator.test')12.[Kapp-uiautomator.apk |################################| 1.7M / 1.7M.7M13.[?25h[D 190716 23:35:05 __main__:157] Push https:///openatx/android-uiautomator-server/releases/download/1.1.7/app-uiautomator.apk -> /data/local/tmp/app-uiautomator.apk:064414.[D 190716 23:35:05 __main__:100] Shell: ('pm', 'install', '-r', '-t', '/data/local/tmp/app-uiautomator.apk')15.[Kapp-uiautomator-test.apk |################################| 966.8K / 966.8K16.[?25h[D 190716 23:35:11 __main__:157] Push https:///openatx/android-uiautomator-server/releases/download/1.1.7/app-uiautomator-test.apk -> /data/local/tmp/app-uiautomator-test.apk:064417.[D 190716 23:35:11 __main__:100] Shell: ('pm', 'install', '-r', '-t', '/data/local/tmp/app-uiautomator-test.apk')18.[I 190716 23:35:18 __main__:193] Install atx-agent19.[Katx-agent_0.6.0_linux_386.tar.gz |################################| 4.0M / 4.0M.0M20.[?25h[D 190716 23:35:23 __main__:157] Push https:///openatx/atx-agent/releases/download/0.6.0/atx-agent_0.6.0_linux_386.tar.gz -> /data/local/tmp/atx-agent:075521.[D 190716 23:35:26 __main__:100] Shell: ('/data/local/tmp/atx-agent', 'server', '--stop')22.[D 190716 23:35:26 __main__:100] Shell: ('/data/local/tmp/atx-agent', 'server', '-d')23.[I 190716 23:35:26 __main__:202] Check install24.[D 190716 23:35:26 __main__:212] Forward: local:tcp:53461 -> remote:tcp:791225.[D 190716 23:35:28 __main__:214] atx-agent version 0.6.026.Successfully init AdbDevice(serial=emulator-5554)看到Successfully就是安装成功了(当然总是有⼏个⼩伙伴的⼿机需要换下了)连接⼿机python-uiautomator2连接⼿机的⽅式有两种,⼀种是通过WIFI,另外⼀种是通过USB⾸先查看uiautomator状态是启动状态b连接⼿机先使⽤adb devices获取⼿机的唯⼀识别序列号,也就是devices前⾯的那⼀串:emulator-5554E:\python36\Scripts>adb devicesList of devices attachedemulator-5554 device测试是否连接成功,先打开你的⼿机上的任意app,⽐如淘宝,cmd输⼊以下信息1.E:\python36\Scripts>python2.Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win323.Type "help", "copyright", "credits" or "license" for more information.4.>>> import uiautomator2 as u25.>>> d = u2.connect_usb('emulator-5554')6.>>> 7.{'currentPackageName': 'com.taobao.taobao', 'displayHeight': 1280, 'displayRotation': 0, 'displaySizeDpX': 360,8.'displaySizeDpY': 640, 'displayWidth': 720, 'productName': 'h60-l01', 'screenOn': True, 'sdkInt': 22, 'naturalOrientation': True}9.>>>看到输出’currentPackageName’: ‘com.taobao.taobao’说明连接成功了2.wifi连接⾸先保证⼿机和电脑在⼀个局域⽹,可以先ping ⼿机ip,看能不能ping的通1.>>> import uiautomator2 as u22.>>> d = u2.connect('192.168.1.xx')3.>>> weditor环境准备pip install —pre weditor创建桌⾯快捷图标python -m weditor —shortcut创建完成后,桌⾯会出现⼀个WEditor快捷图标,双击就能启动了也可以不创建图标,⽤命令⾏启动python -m weditor看到窗⼝出现如下信息,就是启动成功了(窗⼝别关掉了)1.C:\Users\dell>python -m weditor2.listening on http://192.168.1.125:173103.[I 190717 23:50:55 web:2246] 304 GET / (::1) 7.98ms4.[I 190717 23:50:55 web:2246] 304 GET /static/libs/css/buttons.css (::1) 196.47ms5.[I 190717 23:50:55 web:2246] 304 GET /static/loading.svg (::1) 5.99ms6.[I 190717 23:50:55 web:2246] 304 GET /static/ace/ace.js (::1) 12.97ms7.[I 190717 23:50:55 web:2246] 304 GET /static/running.svg (::1) 13.96ms8.[I 190717 23:50:55 web:2246] 304 GET /static/ace/mode-python.js (::1) 19.96ms9.[I 190717 23:50:55 web:2246] 304 GET /static/libs/fontawesome/css/font-awesome.min.css (::1) 1.99ms10.[I 190717 23:50:59 web:2246] 304 GET /api/v1/version (::1) 0.00msweditor连接⼿机先使⽤adb连上⼿机,输⼊adb devices查看⼿机设备号:emulator-55541.C:\Users\dell>adb devices2.List of devices attached3.adb server version (31) doesn't match this client (40); killing...4.* daemon started successfully5.emulator-5554 device在页⾯上输⼊⼿机设备号,点Connet按钮,看到出现⼀个⼩草的图标,就是连接成功了页⾯元素抓取定位元素定位元素的⽅法⽀持uiautomator的定位⽅法,也可以⽀持xpath和坐标定位1.可以查看元素的resourceId属性2.⾃动⽣成xpath定位⽅法3.⽀持坐标点击,根据屏幕的⽐例4.⾃动⽣成uiautomator定位⽅法参考代码5.可以勾选强制使⽤xpath在线Coding调试可以在页⾯的右边调试运⾏代码,这点⽐appium强很多,可以编写代码边调试,还是⾮常⽅便的操作步骤:点勾选⾼铁动车后,点查询按钮1.d(resourceId="com.yipiao:id/checkGaotie").click()2.d.xpath('//*[@resource-id="com.yipiao:id/layQueryCard"]/android.widget.FrameLayout[1]').click()Ctr+Enter运⾏代码,会发现⼿机上已经点击成功⽀持wifi连接⾸先保证电脑和⼿机wifi在⼀个局域⽹,电脑上能ping的通⼿机的ip,输⼊⼿机的ip也可以抓到⼿机上的页⾯元素看完上⾯的⽂章再加上⽂章开头的api⽂档相信基本使⽤应该没问题了,下⾯呢,我写⼀个⽤uiautomator2去⽀付宝收集能量的⼀个脚本哈:脚本如下:1.# coding:utf-82.import uiautomator2 as u23.d = u2.connect_usb('740dc3d1')4.print('打开⽀付宝')5.d.app_start('com.eg.android.AlipayGphone')6.print('点击蚂蚁森林')7.d.xpath('//*[@text="蚂蚁森林"]').click()8.n = d(descriptionContains='收集').count9.for i in range(n):10.d.xpath('//*[contains(@content-desc,"收集能量")]').click()11.print('收集能量成功')12.print('收集能量结束!')怎么样?只要将这个脚本设置未定时任务就可以⾃⼰每天定时去收取能量了,这样你的⼩树才会长得快呀!总体来说呢,uiautomator2⽐appium安装搭建环境要简单⼀点,代码呢也⼗分简洁!其次就是这个weditor 也⽐appium查看页⾯元素要⽅便,反应快,可实时调代码这是关键!期待后⾯的⾃动化项⽬可以⽤uiautomaor2 来试试⼿,届时会继续更新uiautomator2的详细使⽤,及踩坑的记录!———————————————————————————。
Android自动化测试框架对比选择最适合你的工具随着移动应用的快速发展,测试移动应用的重要性变得愈加显著。
为了提高测试效率和质量,许多开发者和测试人员转向自动化测试框架。
而对于Android平台而言,选择最适合的自动化测试工具成为了关键。
本文将对比一些常用的Android自动化测试框架,帮助读者选择最适合自己的工具。
以下是几个常见的框架:1. EspressoEspresso是Google提供的一款简单易用的自动化测试框架,主要用于UI测试。
它支持Java和Kotlin语言,可以在Android Studio中直接集成使用。
Espresso提供了丰富的API,可以方便地进行View的查找和交互操作,同时还支持断言和验证UI行为。
2. UI AutomatorUI Automator同样由Google开发,专注于系统层面的UI自动化测试。
它可以跨应用进行测试,并支持Java编写。
UI Automator提供了强大的查找和操作能力,可以轻松地访问系统组件和UI元素,适用于跨应用的复杂场景。
3. AppiumAppium是一个跨平台的自动化测试框架,支持Android和iOS平台。
它使用WebDriver协议,可以用多种编程语言编写测试脚本,包括Java、Python和JavaScript等。
Appium可以与Android Studio等开发环境集成,支持UI交互和断言,同时也支持跨应用的测试。
4. RobotFrameworkRobotFramework是一个通用的开源自动化测试框架,可以用于不同的平台和应用。
它使用关键字驱动的方式编写测试脚本,支持多种编程语言,包括Python和Java等。
RobotFramework提供了丰富的测试库和插件,支持UI和API层面的测试,并且具有良好的扩展性。
5. CalabashCalabash是一个基于Cucumber的自动化测试框架,使用Ruby语言编写。
Android常⽤adb命令总结针对移动端 Android 的测试, adb 命令是很重要的⼀个点,必须将常⽤的 adb 命令熟记于⼼,将会为 Android 测试带来很⼤的⽅便,其中很多命令将会⽤于⾃动化测试的脚本当中。
Android Debug Bridgeadb 其实就是Android Debug Bridge, Android 调试桥的缩写,adb 是⼀个C/S架构的命令⾏⼯具,主要由 3 部分组成:运⾏在 PC 端的 Client : 可以通过它对 Android 应⽤进⾏安装、卸载及调试Eclipse 中的 ADT、SDK Tools ⽬录下的 DDMS、Monitor 等⼯具,都是同样地⽤到了 adb 的功能来与 Android 设备进⾏交互。
PC 端的⼿机助⼿,诸如 360 ⼿机助⼿、豌⾖荚、应⽤宝等,其除了安装第三⽅应⽤⽅便,其他的功能,基本上都可以通过 adb 命令去完成,这⾥建议测试⼈员尽量不要在电脑上安装这类⼿机助⼿,因为其⾃带的 adb 程序可能会与 Android SDK下的 adb 程序产⽣冲突,5037端⼝被占⽤,导致使⽤ adb 命令时⽆法连接到设备运⾏在 PC 端的 Service : 其管理客户端到 Android 设备上 adb 后台进程的连接adb 服务启动后,Windows 可以在任务管理器中找到 adb.exe 这个进程运⾏在 Android 设备上的 adb 后台进程执⾏adb shell ps | grep adbd,可以找到该后台进程,windows 请使⽤findstr替代 grep[xuxu:~]$ adb shell ps | grep adbdroot 23227 1 6672 832 ffffffff 00019bb4 S /sbin/adbd这⾥注意⼀个地⽅,就是 adb 使⽤的端⼝号,5037,有必要记⼀下接下来我将 adb 命令分为三部分进⾏介绍,adb 命令、adb shell 命令、linux 命令adb 命令在开发或者测试的过程中,我们可以通过 adb 来管理多台设备,其⼀般的格式为:adb [-e | -d | -s <设备序列号>] <⼦命令>在配好环境变量的前提下,在命令窗⼝当中输⼊ adb help 或者直接输⼊ adb ,将会列出所有的选项说明及⼦命令。
APP测试⾯试题分享(附带参考答案)1、Android四⼤组件Android四⼤基本组件:Activity、BroadcastReceiver⼴播接收器、ContentProvider内容提供者、Service服务。
Activity:应⽤程序中,⼀个Activity就相当于⼿机屏幕,它是⼀种可以包含⽤户界⾯的组件,主要⽤于和⽤户进⾏交互。
⼀个应⽤程序可以包含许多活动,⽐如事件的点击,⼀般都会触发⼀个新的Activity。
BroadcastReceiver⼴播接收器:应⽤可以使⽤它对外部事件进⾏过滤只对感兴趣的外部事件(如当电话呼⼊时,或者数据⽹络可⽤时)进⾏接收并做出响应。
⼴播接收器没有⽤户界⾯。
然⽽,它们可以启动⼀个activity或serice 来响应它们收到的信息,或者⽤NotificationManager来通知⽤户。
通知可以⽤很多种⽅式来吸引⽤户的注意⼒──闪动背灯、震动、播放声⾳等。
⼀般来说是在状态栏上放⼀个持久的图标,⽤户可以打开它并获取消息。
ContentProvider内容提供者:内容提供者主要⽤于在不同应⽤程序之间实现数据共享的功能,它提供了⼀套完整的机制,允许⼀个程序访问另⼀个程序中的数据,同时还能保证被访问数据的安全性。
只有需要在多个应⽤程序间共享数据时才需要内容提供者。
例如:通讯录数据被多个应⽤程序使⽤,且必须存储在⼀个内容提供者中。
它的好处:统⼀数据访问⽅式。
Service服务:是Android中实现程序后台运⾏的解决⽅案,它⾮常适合去执⾏那些不需要和⽤户交互⽽且还要长期运⾏的任务(⼀边打电话,后台挂着QQ)。
服务的运⾏不依赖于任何⽤户界⾯,即使程序被切换到后台,或者⽤户打开了另⼀个应⽤程序,服务仍然能够保持正常运⾏,不过服务并不是运⾏在⼀个独⽴的进程当中,⽽是依赖于创建服务时所在的应⽤程序进程。
当某个应⽤程序进程被杀掉后,所有依赖于该进程的服务也会停⽌运⾏(正在听⾳乐,然后把⾳乐程序退出)。