博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习笔记系列一 —— 组件的类型
阅读量:6083 次
发布时间:2019-06-20

本文共 1581 字,大约阅读时间需要 5 分钟。

hot3.png

1.Activity    可以单纯的理解为一个页面就是一个Activity。他与用户的交互息息相关,每个Activity在程序中其实是相互独立的,这样带来的好处就是,一个Activity可以被自己所在的程序调用,也可以被其他程序调用,来实现相同的功能,灵活度很高。

2.Service    完全与界面无关,只运行在后台,适合做一些耗时、远程连接这样的事情。他是被Activity启动并绑定绑定后可完成交互,但是又独立运行在后台的组件,当Activity停止活动,他仍旧可以继续运行。

3.Content provider    可以把他想象成Android程序的公共数据集。当我们使用文件系统、SQLite、网站后台来储存数据时,Content provider甚至可以允许其他程序来修改你本程序的数据。比如手机QQ用Content provider来储存联系人,它允许微信获取到联系人列表。

4.Broadcast receiver    是一个用来响应系统范围内的广播的组件,他与系统通知栏的通知是完全不同的概念。系统本身可以发起一些Broadcast receiver,比如电量低、正在充电、来电来短信等,程序也可以发起广播。一个广播可以是通知给其他程序,让其去完成相应的任务,也可以发起一个通知栏,告诉用户现在出现了一个什么样的情况。

Android系统设计的一个独特方面是,任何程序都可以启动其它程序的四大组件。 例如,如果你想让用户使用设备相机捕捉一个相片,有另外一个程序做这件事,那么你的程序将可以调用它, 而不是你自己开发一个拍照的activity。你不必从相机程序中嵌入代码或者连链接代码也不需要。取而代之地,你可以简单地启动相机程序中拍照的activity。 当拍照完成,相片就会返回给你的程序供你使用。从用户的角度,就好像相机就是你程序的一部分。

当系统启动一个组件,它其实就启动了这个程序的进程(如果这个进程还未被启动的话)并实例化这个组件所需要的类。 例如,如果你的程序启动了相机程序里的activity去拍照,这个activity实际上是运行在相机程序的进程里,而不是你自己的进程。 因此,不像其它系统里的程序,Android程序并不是单入口的(例如它没有main方法)。

由于系统把程序运行在一个个独立的进程中,并使用文件权限来限制对其它程序的访问,所以你的程序不能从其它程序中直接激活组件。 尽管如此,Android系统可以做到!激活一个其它程序的组件,你必须向系统发送一个信息,这个信息需要指定你的intent 来启动一个指定的组件。 然后系统就会为你激活这个组件。三大组件——activitie, service, 和 broadcast receiver都可被 intent异步激活。

激活组件的方法:

1.启动一个activity(或者让让它来做一些新的工作)——    startActivity(Intent)    startActivityForResult(Intent) 

2.启动一个service(或者给一个正在运行的service发送新的指令)——    startService(intent)    bindService(intent)

3.初始化一个broadcast——    sendBroadcast()    sendOrderedBroadcast()    sendStickyBroadcast()

4.让content provider执行一个查询操作通过调用 ContentResolver的query() 方法

参考资料:http://www.android-doc.com/guide/components/fundamentals.html

转载于:https://my.oschina.net/JiangTun/blog/639785

你可能感兴趣的文章
结构体/struct
查看>>
用VC++开发Oracle数据库应用程序详解
查看>>
CCS初学那点事(二)
查看>>
机器学习:数据预处理之独热编码(One-Hot)
查看>>
我的友情链接
查看>>
apache之虚拟主机
查看>>
dedeCMS5.7在任意栏目获取顶级栏目名称及链接的方法
查看>>
linux之文本搜索工具(grep、egrep)用法
查看>>
活动目录中组的类型和可用范围
查看>>
子网掩码划分随手记
查看>>
mysqli_fetch_all
查看>>
OpenCL-0-基础概念
查看>>
‘char* maxn(const char**, int)’ does not match any template declaration
查看>>
打造企业级应用--邮件服务器postfix+dovecot+extmail
查看>>
微软开发者解释为什么Windows内核落后于Linux
查看>>
HP DL380G5安装Win2012后开启Hyper-V
查看>>
信息系统项目管理师系统集成项目管理工程师相关法律法规
查看>>
标准io和管道
查看>>
微会动平台免费开放多种活动场景现场抽奖功能产品助力企业市场活动
查看>>
Project:如何分析项目中的资源分配情况
查看>>