1、Android四大组件:Activity , Service, BroadCaseReceiver , ContentProvider
2、详细介绍四大组件
(1)Activity :
作用:Android程序与用户交互的窗口、一个Activity通常是一个单独的屏幕,上面可以显示不同的控件。
生命周期:onCreate---->onStart---->onResume---->onPause---->onStop---->onDestrop
是否可以开启多进程:可以。在AndroidManifest中给Activity配置android:process属性。
示例:
<activity
android:name=".ui.activity.ChatSettingActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.NoticeOfficialActivity"
android:process="com.shougang.shiftassistant1"
android:screenOrientation="portrait" />
<activity
上面图一就是正常的activity,图二就是多进程的形式。这意味着当前应用进程是com.shougang.shiftassistant时,又新增了一个进程,进程名是com.shougang.shiftassistant1
(2)Service 服务
作用:一个长期运行在后台,不与用户产生UI交互的程序,可以用户执行网络请求,播放音乐,执行文件读写操作等。
启动形式:startService(一直运行在后台,即使启动service的组件已被销毁)
bindService(有组件与其绑定时才会运行)
生命周期:startService: onCreate----->onStartCommand----->onStop-------->onDestrop
bindService: onCreate----->onBind----->onUnbind------->onDestroy
是否可以开启多进程:可以。在AndroidManifest中给Activity配置android:process属性
(3)BroadCaseReceiver 广播接收者
作用:没有用户界面,它可以启动一个activity或service来启动它们收到的消息
广播类型:普通广播: 通过context.sendBroadCast(Intent intent)发送消息
有序广播:通过context.sendOrderedBroadCast(intent , receiverPermission)发送消息
异步广播:通过context.sendStickyBroadcast(Intent myIntent)发送的
注意:生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报ANR(Application No Response) 程序无响应的错误信息,如果需要完成一项比较耗时的工作 , 应该通过发送 Intent 给 Service, 由Service 来完成 . 这里不能使用子线程来解决 , 因为 BroadcastReceiver 的生命周期很短 , 子线程可能还没有结束BroadcastReceiver 就先结束了。
是否可以开启多进程:可以。在AndroidManifest中给Activity配置android:process属性
(4)ContentProvider 内容提供者
作用:为应用程序之间实现数据共享,实现统一接口。使用表的形式来对数据进行封装。
方法:1、 public boolean onCreate():该方法在ContentProvider 创建后就会被调用,Android开机后,ContentProvider在其它应用第一次访问它时才会被创建。
2、 public int insert():该方法用于宫外部应用为ContentProvider中添加数据使用。
3、 public int delete(Uri uri, String selection, String[] selectionArgs):该方法用于供外部应用从ContentProvider中删除数据。
4、 public int update(Uri uri, ContentValues values, String selection, String[]selectionArgs):该方法用于供外部应用更新ContentProvider中的数据。
5、 public cursor query(Uri uri, String[] projection, String selection, String[]selectionArgs, String sortOrder):该方法用于供外部应用查询ContentProvider中的数据。
Uri详解:外界可以通过ContentResolver接口来访问ContentProvider(内容提供者)中的数据。但是在详细了解ContentResolver之前先理解Uri。Uri 通用资源标志符(Universal Resource Identifier)Uri代表要操作的数据,Android中可用的每种资源 - 图像、视频片段等都可以用Uri来表示。
是否可以开启多进程:可以。在AndroidManifest中给Activity配置android:process属性