android 学习笔记 四大组件的理解

1,android四大组件

activity:负责与用户交互的组件,只能通过setContentView(View)来显示组件,View组件是所有UI控件、容器空间的基类。

Service:和activity地位并列,service通常位于后台运行,一般不需要与用户交互,因此Service,没有图形用户界面。

              拥有自己独立的生命周期,Service组件通常用于为其他组件提供后台服务或其他组件的运行状态。

BroadCastReceiver:接收广播消息
 * 本质上就是一种全局监听器,用于监听系统全局的广播消息;由于BroadCastReceiver是一种全局的监听器,
 * 因此他可以非常方便的实现系统中不同组件之间的通信。例如,我们希望客户端程序与starService()方法
 * 启动的Service之间通信,就可以借助BroadCastReceiver来实现;
 *
 * 启动BroadCastReveiver只需要两步:
 *    1、创建需要启动的BroadCastReveiver的Intent(添加setAction(),和参数),
 * 2、调用Context的sendBroadcast()、sendOrderedBroadcast()、sendStickyBroadcast()方法来启动指定的BroadcastReceiver;

 * 发出一个广播intent后,所有匹配该intent的广播都有可能被启动;

 * 指定该BroadCastReveiver能匹配的Intent的方式(两种)(也就是注册方法):
 *    1、代码指定:调用BroadCastReveiver的Context的registerReveiver(BroadCastReveiver bs,IntentFilter inf)方法指定
 *    2、在AndroidManifest.xml文件中使用<recriver.../>元素注册
 *

 * 注意:每次BroadCast发生后,系统会创建对应的BroadCastReveiver的实例,并自动触发他的onReceive()方法,onReceive()方法执行后,实例就会被销毁;此外onReceiver()方法中不能执行一些耗时操作,超过10秒会报ANR;如果需要在此方法中执行一些耗时操作,则需要考虑通过Intent启动一个Service来完成操作,不考虑使用新线程去完成好事操作,因为BroadCastReveiver的生命周期很短,可能出现子线程还没结束,BroadCastReveiver就已经退出了

 * BroadCast广播分为两种:
 * 1,普通广播:完全异步的,可以在同一刻被所有接受者接收到,消息传递的效率比较高,缺点不能将处理结果传递给下一个接收者
 * 2、有序广播:接受者按预先声明的优先级依次接收BroadCast,优先级生声明在<Intent-filter.../>元素的android:priority中;
 *            数越大级别越高,也可以调用IntentFilter的serPriority()进行设置
 *
 * Intent的几个重要属性:动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。
     *在其<intent-filter>中声明了<action>,即目标action,如果我们需要做一个跳转的动作,就需要在Intent中指定目标的action,如下:


     public void gotoTargetActivity(View view) {
          Intent intent = new Intent("com.scott.intent.action.TARGET");
          startActivity(intent);
     }
 *  data和extras,即执行动作要操作的数据和传递到目标的附加信息:
 *  分类(Category):要执行动作的目标所具有的特质或行为归类,应用主界面Activity通常有<category android:name="android.intent.category.LAUNCHER" />
 *  type:要执行动作的目标Activity所能处理的MIME数据类型
 *  component,目标组件的包或类名称

ContendProvider:实现跨应用数据交换。

               实现ContendProvider时,需实现如下抽象方法:

               (1)insert(Uri,ContentValues):向ContentValues插入数据;

               (2)delete(Uri,ContentValues):删除ContentValues中指定数据;

               (3)update(Uri,ContentValues,String,String[]):更新ContentValues中指定数据;

               (4)query(Uri,String[],String,String[]):从ContentValues中查询数据;

Intent和IntentFilter:

         Intent 不同组件之间通信的载体,当一个组件通过Intent表示了启动或触发另外一个组件的“意图”之后,意图可以分为            两类:

         (1)显示Intent:明确指定需要启动或者触发的组件的类名;

         (2)隐示Intent:只是指定需要启动或触发的组件应满足怎样的条件;

           

猜你喜欢

转载自blog.csdn.net/qq_33360506/article/details/79554838
今日推荐