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开发艺术探索》

你可能感兴趣的:(Android四大组件的作用,以及多进程的开启)