Android 四大组件(进阶第一天)

面试基础题


1 四大组件

首先我们可以回答 四大组件分别为Activity、Service(服务)、Content Provider(内容提供者)、还有最后一个就是BrocastReciver(广播)

这时你要自己主动的说下(切记不要让面试官让你介绍下)四大组件是什么的 是干什么的 有什么用?

那我们先从第一个也是我们经常用到的 Activity说起,比如你打开一个App的界面就相当于启动了一个单独的屏幕,可以通过Intent来进行数据之间的传递,并且每个Activity都有自己的生命周期 下面这张图就解释了6种状态 7中方法(不要忘记onRestart这个)  还有一个就是一步小心就会出现的 忘记在AndroidManifest注册 导致空指针的出现

Activity的生命周期

Service(服务) 首先服务是在后台处理完成用户指令的操作,比如我们用到最多的播放音乐,下载等,那它的特点:无用户界面、在后台运行、生命周期长。和activity一样有自己的生命周期,但是不同的是服务分为startService(启动服务)和(boundService)绑定服务 所以生命周期也就不同了。那么 启动服务和绑定服务有什么区别呢?下面我们先来从字面意思上说下  个人理解呀 启动服务 同生不同死 (只有服务调用本身的stopSelf()方法或者其他组件调用stopService()才能停止服务) 绑定服务 同生同死   注册也是在AndroidManifest 使用<service> </service>标签注册。下面这张图就是启动与绑定服务的生命周期(左边的是启动,右边的是绑定)。同时Service是运行在主线程中的,如果有什么耗时的操作,建议新建子线程去处理,避免阻塞主线程,降低ANR的风险。使用service出现的问题,隐式Intent启动去调用bindService()方法,系统会抛出异常。可以通过设置android:exported=false来确保这个Service仅能在本应用中使用。


左启动右绑定服务生命周期



咱们先来说下广播(BrocastReciver) 广播是用来异步接收广播Intent  分为两大类 正常广播和有序广播 。 正常广播是完全异步的,它们运行到一个没有定义顺序的状态下,但是不能得到我们所要的使用的结果或中止接受。 有序广播,就是每个receiver执行后可以传播到下一个receiver,也可以完全中止传播--不传播给其他receiver。 而receiver运行的顺序可以通过intent-filter 里面的android:priority来控制,当priority优先级相同的时候,Receiver以任意的顺序运行。避免系统超载,我们一次只能运行一个receiver。 通过广播onReceive我们发现当该函数返回,对象就已经无效了,结束了生命周期。所以我们在调用onReceive不能进行耗时操作,通过activity或者seciver来进行。注册广播也分为静态注册和动态注册 个人喜欢静态注册的 毕竟在Xml中方便观看,而动态注册,需要在退出程序前要记得调用Context.unregisterReceiver()方法。一般在activity的onStart()里面进行注册, onStop()里面进行注销。


最后就到我们最后一个组件 内容提供者(ContentProvider)平常用到的频率比较少。主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作。ContentProvider分为系统的和自定义的,系统的也就是例如联系人 图片 音视频等。使用ContentProvider共享数据的好处是统一了数据访问方式。比如说我们要对外进行文件共享 那么我们就需要一个文件操作的读写数据。什么情况下会用到?  当你需要在多个应用之间共享数据的时候就需要用到内容提供者。主要方法创建 增删改查,这个方法 getType(Uri) 用于返回指定的Uri中的数据的MIME类型。说到MIME类型我们先看下Uri我们把Uri分为三部分,第一部分"content://"可以看成是网址的"http://"。第二部分 是用来唯一标识这个ContentProvider  比如说是这样的shi.qianjin 也就是网址中的主机名。第三部分是路径名,用来表示将要操作的数据。可以看作网址中细分的内容路径。完整的ContentProVide的content://shi.qianjin/person/10。 第一部分为content:// 第二部分为shi.qianjin 第三部分为person/10。so我们看看刚刚提到的MIME类型是什么样子的。我们分为集合类型和非集合类型。如果操作的数据属于集合类型,MIME类型字符串应该以vnd.android.cursor.dir/开头。如果不是集合类型,那么MIME类型字符串应该以vnd.android.cursor.item/开头。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352