Android四大组件的作用,以及多进程的开启

众所皆知,android四大组件有Activity、Service、BroadCastReceiver、ContentProvider。对于android开发来说,四大组件基本上是工作中必不可少,也是最常用到的内容。接下来我们逐个看下他们的作用。

1.Activity(活动)

activity是一种展示组件,一个activity就是一个单独的屏幕,相当网站的一个页面。

activity可以用于直接向用户展示一个界面,并且监听用户的操作并作出交互。最常见的就是注册登录页面,展示输入框等组件,并获取用户的输入进行注册或者登录操作。

activity必须要在AndroidManifest进行注册。不然不能直接调用。

android:name=".TestActivity"  

android:label="This is a Activity">  

前面说activity相当于网页的一个页面,其实activity也可以以弹窗形式存在。只要在AndroidManifest注册的时候指定对话框主题即可

android:name=".TestActivity"

android:theme="@android:style/Theme.Dialog"

android:label="This is a Activity">

activity是可以停止的,调用 finish方法即可。

  1. Service(服务)

Service是一种计算型组件,用于在后台执行需要放在后台执行,用户无法直接感知的操作。例如在后台播放音乐。注意:service并不是专用于执行耗时操作的,因为service也是运行在主线程里面的,所以耗时操作如网络请求必须开启子线程。

Activity 组件只有一种运行模式,即 Activity 处于启动状态,Service 组件略有不同,它有两种状态:启动状态和绑定状态。

启动状态

Service 内部可以做一些后台计算,并且不需要和外界有直接的交互。该运行模式可以使用 Context 的startService方法启动Service。

绑定状态

Service 内部同样可以进行后台计算,但是处于这种状态时,外界可以很方便地和 Service 组件进行通信。该运行模式使用 Context 的bindService方法启动 Service。

Service也必须在AndroidManifest里面注册方可使用

3.BroadCastReceiver(广播接收器)

BroadCastReceiver是一种消息型组件,用于在不同的组件甚至不同的应用之间传递消息。 BroadcastReceiver 同样是用户无感知的,运行在系统内部。BroadCastReceiver没有停止的概念。

BroadCastReceiver有两种注册方式:

静态注册

在AndroidManifest里面注册。此种形式的广播不需要启动应用即可接收到相应的广播

动态注册

IntentFilter filter=new IntentFilter();

filter.addAction("com.simbazou.receiver.test");

this.registerReceiver(mReceiver,filter)

直接在代码里面注册,必须要启动应用才能收到广播。还需要在onDestory取消注册

this.unregisterReceiver(mReceiver)

4.ContentProvider(内容提供者)

ContentProvider是一种数据共享型组件,用于向其它组件乃至其他应用共享数据。他对于用户也是无法被感知的

实现一个ContentProvider必须实现insert、delete、update、query四种操作,并且需要注意线程同步的问题,因为这些方法有可能被多个线程调用。

ContentProvider也必须在AndroidManifest上注册。

5.四大组件多进程的开启

首先我们要先理解进程的概念,进程一般指一个执行单元,在移动设备中一般指一个应用。一个进程可以有多个线程,一般我们常用的UI主线程或者是网络子线程都是包含在进程里面的。

Android 四大组件都可以开启多进程,需要在AndroidManifest.xml里面添加android:process=":remote'。需要注意的是,process属性的值几乎可以随便设置,不一定非得是remote

例如

android:name=".TestActivity"

android:process=":remote"

android:label="This is a Activity">

应用设置多进程的好处:

一般来说,Android应用多进程有三个好处:

1)我们知道Android系统对每个应用进程的内存占用是有限制的,而且占用内存越大的进程,通常被系统杀死的可能性越大。让一个组件运行在单独的进程中,可以减少主进程所占用的内存,降低被系统杀死的概率.

2)如果子进程因为某种原因崩溃了,不会直接导致主程序的崩溃,可以降低我们程序的崩溃率。

3)即使主进程退出了,我们的子进程仍然可以继续工作,假设子进程是推送服务,在主进程退出的情况下,仍然能够保证用户可以收到推送消息。

应用设置多进程的缺陷:

由于进程间的内存是不可见的,所以会带来一些缺陷:

1)Application的多次重建。

2)静态成员的失效。

3)文件共享问题。

4)断点调试问题

参考资料:《Android开发艺术探索》

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

推荐阅读更多精彩内容