学过Android的人都知道,Android有四大组件,分别是Activity、Severice、BroadcastReceiver、ContentProvider。下面就来一览这四个组件的基本功能和职责。Activity:提供了Android应用中所有与用户交互的组件。Activity通过setContentView(view)实现组件的显示,其中view组件包含了Android几乎所有的UI控件,用户看到的也正是这一部分。
多个Activity是由栈存储的,当前活动的栈位于栈顶。
Activity包含一个setTheme(int resid)方法设置窗口的风格,如不现实标题,以对话框形式显示窗口。
注:
显示组件的方法:
1.setContentView(R.layout.main),布局交给XML去实现;

2.大家千万别忘记了还可以使用Java代码实现布局并显示,
LinearLayout layout = new LinearLayout(this);
setContentView(layout);

Service:是位于后台运行的一个组件,它是运行在应用程序的主线程中的。
注:
1.Service不是一个进程。它不会自己独立运行一个进程,只能作为进程的一部分而存在;
2.Service不是一个线程,它只是在主线程中运行。

BroadcastReceiver:是广播消息的接收器,是应用程序间传播信息的机制
在 Android 里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。

ContentProvider:是应用程序之间进行数据交互的组件。其中有如下几个方法:
insert(Uri,ContentValues);
delete(Uri,ContentValues);
update(Uri,ContentValues,String,String[]);
query(Uri,String[],String,String[],String);

Intent:特别申明它不是Android的组件,确是Activity、Service、BroadcastReceiver组件之间进行数据交换的载体。
1.当启动一个Activity时,调用startActivity(Intent intent),intent内部可以封装数据传递给目标Activity。
2.当启动一个Service时,调用startService(Intent intent),intent内部可以封装数据传递给目标Service
或调用bindService(Intent intent,ServiceConnection,int flags),intent内部可以封装数据传递给目标Service。
这里介绍下startService和bindService的区别:
startService:调用者(service1)通过startService(intent)启动被调用者(service2)后,service1和service2之间就不存在任何联系了,不可以访问service1内的方法,即使service1被关闭ondestroy,service2也会继续存在;
bindService: 调用者(service1)通过bindService(intent)启动被调用者(service2)后,service1和service2之间绑定这一起,如果调用者service1被关闭ondestroy,被调用者service2也会被关闭。
3.当启动一个BroadcastReceiver时,调用sendBroadcast(Intent intent)、sendStickyBroadcast(Intent intent)、sendOrderedBroadcast(Intent intent,String receiverPermission)发送广播。

Intent分为两类:
1.显示Intent : 显示Intent明确指定需要启动或触发的组件类名;
2.隐示Intent : 隐示Intent只是指定需要启动或者触发组件应满足的要求。需要Android进行解析,然后查找匹配的目标组件,靠IntentFilter来实现。

更多相关文章

  1. Android 入门知识点梳理之一 四大组件
  2. Android Jetpack组件学习 ViewModel & LiveData
  3. android 四大组件之Service
  4. Android 将自己的应用程序改成系统的应用程序
  5. android应用 小试牛刀 开发自己的应用程序就是这么简单
  6. Android中获取应用程序(包)的信息-----PackageManager的使用(
  7. FAQ00366]如何使Android应用程序获取系统权限
  8. 使用命令行签名Android应用程序

随机推荐

  1. Android之UI学习篇十:使用TabHost实现微博
  2. Android中TextView和EditView常用属性设
  3. 开箱即用!Android四款系统架构工具
  4. android:layout_weight属性详解
  5. 如何过滤Android(安卓)offline log
  6. Android(安卓)PNG渐变背景图片失真问题
  7. Android(安卓)AIDL服务学习笔记
  8. 教你瘦身zxing(android)
  9. 转:大厂Android面试题
  10. android新建工程报找不到android:preserv