专栏首页Android干货园Android开发之路--(2)--Android四大组件

Android开发之路--(2)--Android四大组件

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/47214197

    说实话我对Android的理解还是比较浅显的,但是也尝试着写一下自己的感受吧。

    做了几个月的工作,对Android的理解就是Android的四大组件:Activity、Service、Broadcast Receiver、Content Provider。下面我来详细介绍一下这四大组件:

1.Activity:

Activity众所周知,也就是一个活动,相当于界面,用来显示内容的。它是Android应用中负责与用户交互的组件,可以把它想象成Swing编程中的JFrame控件。Activity为Android应用提供可视化用户界面,如果一个应用需要多个界面,那么这个应用就有多个Activity组成,这些Activity组成Activity栈,当前的Activity处于栈顶的位置。Activity包含View组件,View组件是由所有的UI控件,容器控件组成的。

要深入了解Activity,就要掌握Activity的生命周期。

在实现 Activity 类的时候,通过覆盖( override )这些方法即可在你需要处理的时候来调用。

  一、 onCreate :当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。

  onCreate 方法有一个参数,该参数可以为空( null ),也可以是之前调用onSaveInstanceState ()方法保存的状态信息。

  二、 onStart :该方法的触发表示所属活动将被展现给用户。

  三、 onResume :当一个活动和用户发生交互的时候,触发该方法。

  四、 onPause :当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。

  五、 onStop :当一个活动不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发 onStop 方法。 所以保存状态信息是应该在onPause时做,而不是onStop时做。活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。因此对于开发者来说,在设计应用程序的时候,必须时刻牢记这一原则。在一些情况下,onPause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。

  六、onRestart :当处于停止状态的活动需要再次展现给用户的时候,触发该方法。

  七、 onDestroy :当活动销毁的时候,触发该方法。和onStop 方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。

2.Service

与Activity的地位是并列的,它也代表一个单独的Android组件。Service与Activity的区别在于:Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面。Service组件需要继承Service基类。一个Service组件被运行起来之后,它将拥有自己独立的生命周期,Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。

3.Broadcast Receiver

是Android应用中另一个重要的组件,BroadcastReceiver代表广播消息接收器。从代码实现角度来看,BroadcastReceiver非常类似于事件编程中的监听器。与普通事件监听器不同的是:普通事件监听器监听的事件源是程序中的对象;而BroadcastReceiver监听的事件源Android应用中的其他组件。使用BroadcastReceiver组件接收广播消息比较简单,开发者只要实现自己的BroadcastReceiver子类,并重写onReceive(Context context,Intent intent)方法即可。当其他组件通过sendBroadcast()、sendStickyBroadcst()或sendOrderedBroadcast()方法发送广播时,如该BroadcastReceiver也对该消息“感兴趣”(通过IntentFilter配置),BroadcastReceiver的onReceive(Context context,Intent intent)方法将会被触发。   开发者实现里自己的BroadcastReceiver之后,通常有两种方式来注册这个系统级的“事件监听器”。

-->在Java代码中通过Context.registReceiver()方法注册BroadcastReceiver。

-->在AndroidManifest.xml文件中使用<receiver……>元素完成注册。

4.Content Provider

对于Android应用而言,组件必须相互独立,如果这些Android应用之间需要实现实时的数据交换。例如我们开发里一个发送短信的程序,当发送短信时需要从联系人管理应用中读取指定联系人的数据----这就需要多个应用程序之间进行实时的数据交换。

    Android系统为这种跨应用的数据交换提供里一个标准,ContentProvider。当用户实现自己的ContentProvider时,需要实现如下抽象方法。

Insert(Uri, ContentValues):向ContentProvider插入数据。

Deleter(Uri,ContentValues):删除ContentProvdier中指定数据。

Update(Uri, ContentValues, String, String[] ):更新ContentProvider中指定数据。

Query(Uri, String[], String, String[], String):从ContentProvider查询数据。

通常与ContentProvider结合使用的是ContentResolver,一个应用程序使用ContentProvider暴露自己的数据,而另一个应用程序则通过ContentResoler来访问数据。

Intent和IntentFilter  严格的说,Intent并不是Android的组件,但它对于Android应用的作用非常大----它是Android应用内不同组件之间通信的载体。当Android运行时需要连接不同的组件时,通常就需要借助于Intent来实现。Intent可以启动应用中另一个Activity,Service,BroadcastReceiver。

目前本人对四大组件理解就这么多,还没有深入的了解,本文也参考了网上的资料,如有错误的地方还希望大家指正。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2. Jetpack源码解析---Navigation为什么切换Fragment会重绘?

    Jetpack组件之Navigation—看完你就知道Navigation是什么了?

    Hankkin
  • Retrofit--使用Retrofit时怎样去设置OKHttp

    版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/51...

    Hankkin
  • Android实现沉浸式通知栏,通知栏可以根据app的颜色可改变啦

    版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/46...

    Hankkin
  • Linux命令之ping、traceroute、mtr——查看网络状态

    ping、traceroute、mtr这三个都是Linux下查看本机或服务器网络状态等所用的命令,下面一一介绍:

    浩Coding
  • 原创:带你从零看清Node源码createServer和负载均衡整个过程

    作为一名曾经重度使用Node.js作为即时通讯客户端接入层的开发人员,无法避免调试V8,配合开发addon。于是对Node.js源码产生了很大的兴趣~

    theanarkh
  • 【小家Spring】探索Spring AOP中aopalliance的Joinpoint、MethodInvocation、Interceptor、MethodInterceptor...

    在这篇博文:【小家Spring】详解Spring AOP中底层代理模式之JdkDynamicAopProxy和CglibAopProxy(ObjenesisCg...

    YourBatman
  • 【1996~2016】盘点 20 年 AAAI 人工智能最佳论文

    【新智元导读】新智元汇集计算机科学领域1996年到2016年人工智能领域最佳论文,附上题目及摘要的中文翻译,并对这些作品进行系统考察,从中可以看出人工智能这门学...

    新智元
  • Hexo+Github 博客搭建之环境搭建篇

    打开 Github 官网首页(https://github.com/),点击右上角的 Sign Up ,然后在出现的页面上填写你的相关信息,进行注册:

    DeROy
  • 北京铁通亦庄瀚维云数据中心落成,节能高效助力IDC云化大步向前

    港湾人儿
  • xmake从入门到精通4:常用C/C++项目描述设置详解

    xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。

    ruki

扫码关注云+社区

领取腾讯云代金券