Android组件

Android组件:

1、activity:一个activity通常是一个单独的界面,每一个activity通常就是一个单独的类,继承于activity基类。
继承结构:
java.lang.Object
android.content.Context
android.app.ApplicationContext
android.app.Activity

创建:继承 Activity,覆盖Activity的 onCreate()方法,在该方法中调用 setContentView()方法(展示要显示的视图),调用 findViewById()方法实例化组件。
 
在 activity之间进行切换(即一个 activity启动另一个activity),使用 startActivity()方法或者 startActivityForResult()。参数为 Intent。activity之间传递数据,需要用到对象Bundle,将要传递的信息封装在该对象里,再通过 Intent对象传递。

activity被 activity栈保管(先进后出)。activity的生命周期图:



activity生命周期中的方法:

public class Activity extends ApplicationContext {
    //创建
    protected void onCreate(Bundle savedInstanceState);
    //启动
    protected void onStart();
    //重新启动
    protected void onRestart();
    //恢复 
    protected void onResume();
    //暂停 
    protected void onPause();
    //停止 
    protected void onStop();
    //销毁 
    protected void onDestroy();
    
}

onCreate(Bundle savedInstanceState):创建 activity是调用,Bundle提供了对以前保存的任何状态的访问;

onStart():真实可见时调用;

onResume():与用户交互时调用;

onPause():activity被暂停或收回CPU和其他资源时调用,该方法用于保存活动状态,保护现场,压栈;

onStop():被停止并转为不可见阶段及后续的生命周期事件时调用;

onRestart():重新启动 activity时调用,该活动仍在栈中,不是启动新的 activity;

onDestroy():完全从系统内存中移除时调用。


2、service:运行于后台,没有用户界面的服务程序(如背景音乐,从网络获取数据等)。
service的生命周期长,但不复杂,只继承了 onCreate(),onStart(),onDestroy()三个方法。

启动:Context.startService() 和 Context.bindService(),有着不同的生命周期。

  • Context.startService():启动 startService ->onCreate()->onStart();停止 stopService->onDestroy()。如果直接退出而没有停止Service,则Service会一直在后台运行;
  • Context.bindService():绑定 bindService ->onCreate()->onBind();退出后,即解绑定 unbindService->onUnbind()->onDestroy()


3、Intent:Intent负责对应用中一次操作的动作、动作涉及的数据进行描述,Android根据此Intent的描述,找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。可用于应用程序、内部Activity/Service之间的交互。是不同组件相互通信的纽带。

Intent启动组件的方法:
组件方法
ActivitystartActivity()
ServicestartService()

bindService()
BroadcastssendBroadcasts()

sendOrderedBroadcasts()

sendStickyBroadcasts()

Intent属性:Action(Intent要完成的动作,是一个字符串常量)、Data(数据,执行动作要操作的数据,使用指向数据的url表示)、Category(被执行动作的附加信息,字符串常量)、Type(类型,显式指定Intent的数据类型MIME,一般Intent的数据类型能够根据数据本身进行判定,但通过设置这个属性,可以强制采用显式指定的类型而不再进行指导)、Component(指定Intent目标组件的类名称,一般android会根据Intent中包含的其他属性的信息,如action、data/type、category进行查找,最终找到一个与之匹配的目标组件,但如果component有指定的话,将直接使用它指定的组件,而不再执行上述查找过程,指定了这个属性以后,Intent的其他所有属性都是可选的)、Extra(添加一些组件的附加信息)。


4、ContentProvider:为存储和获取数据提供统一的接口。在不同的应用程序之间共享数据。
ContentProvider的方法:
query:查询
insert:插入
update:更新
delete:删除
getType:得到数据类型
onCreate:创建数据时调用的回调函数

每个ContentProvider都有一个公共的URI,表示这个ContentProvider所提供的数据。ContentProvider在Android.provider包中


5、andrid的UI界面由View和ViewGroup及其派生类组合而成,View是UI组件的基类,ViewGroup是容纳这些组件的容器。



6、BroadcastReceiver:光比接收组件,不执行任何任务,只接收并响应广播通知的一类组件。(大部分广播通知是由系统产生的,例如改变时区,电池电量低,用户选择了一幅图片或用户改变了语言首选项)

广播事件的流程:
  1. 注册广播事件。静态注册(通过AndroidManifest.xml文件定义,注册的广播接收器必须继承BroadcastReceiver);动态注册(在程序中使用Context.registerReceiver注册,注册的广播接收器相当于一个匿名类)
  2. 发送广播事件:通过Context.sendBroadcast来发送,用Intent来传递注册时用到的Action
  3. 接收广播事件:当发送的广播被接收监听器听到后,调用它的onReceive()方法,并将包含消息的Intent对象传给它
生命周期:一个BroadcastReceiver对象仅在调用onReceiver(Context, Intent)的时间有效,一旦从这个函数返回,系统就认为这个对象结束了,不能再被激活。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值