Android四大组件每个组件的作用?它们都可以开启多进程吗?

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属性

 

 

 

转载于:https://my.oschina.net/u/1792000/blog/1811960

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值