Android基本组件

Android组件化框架设计与实践

什么是组件 组件作用 组件化的指导思想
是对数据和方法的简单封装,功能单一,高内聚,并且是业务能划分的最小粒度 侧重于单一功能的内聚,偏向于解耦 分而治之,并行开发,一切皆组件

一、Activity组件

  • Activity是Android最重要的组件,负责用户界面的设计

  • Activity用户界面框架采用MVC 模式(Model View Controller)

    • 控制器:负责接受并响应程序的外部动作

    • 通过视图:反馈应用程序给用户的信息(UI 界面反馈)

    • 模型:应用程序的核心,用于保存数据和代码

  • Activity之间通过Intent进行通信

二、Service组件

一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序

三、BroadcastReceiver组件

  • 在Android系统中,当有特定事件发生时就会产生相应的广播

    • 例如,开机启动完成、收到短信、电池电量改变、网络状态改变等
  • NotificationManager(通知管理器)会在手机的状态栏里产生一个具有提示音的通知,用户通过下滑手势可以查看相关信息

  • BroadcastReceiver(广播接收者)接收来自系统或其他应用程序的广播,并做出回应

四、ContentProvider组件

为了跨进程共享数据, Android提供了ContentProvider接口,可以在无须了解数据源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作

五、Context

  • 在应用程序中Context的具体实现子类就是:Activity,Service,Application

    • Context数量 = Activity数量 + Service数量 + 1
  • BroadcastReceiver、ContentProvider并不是Context的子类,其所持有的Context都是由其他组件传递过来的

  • Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供

  • Context都没弄明白,还怎么做Android开发

  • Android程序不像Java程序一样,随便创建一个类,写个main()方法就能运行,Android应用模型是基于组件的应用设计模式,组件的运行要有一个完整的Android工程环境,在这个环境下,Activity、Service等系统组件才能够正常工作,而这些组件并不能采用普通的Java对象创建方式,new一下就能创建实例了,而是要有它们各自的上下文环境,也就是我们这里讨论的Context。可以这样讲,Context是维持Android程序中各组件能够正常工作的一个核心功能类

六、Application

当Android程序启动时系统会创建一个Application类型的对象,用来存储系统的一些信息完成数据传递、共享和缓存等操作

Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期,且是全局、单例的,即在不同的Activity和Service中获得的对象都是同一个对象

七、意图对象Intent

Android提供轻量级的进程间通信机制Intent,使跨进程组件通信和发送系统广播成为可能,组件Activity、Service和BroadcastReceiver都是通过消息机制被启动(激活)的,其使用的消息就封装在对象Intent里

八、Android应用程序的运行入口

在一个Android应用程序开始运行的时候,会单独启动一个进程(Process)。默认的情况下,这个应用程序中的所有组件(Activity、Service、BroadcastReceiver和ContentProvider)都会运行在这个进程里。

一个Android应用程序通常由多个Activity组成,但只有一个主Activity。在项目清单文件中使用<activity>标签注册主Activity时,还需要内嵌<intent-filter>、<action>和<category>标签,以此说明该Activity为Android应用程序的入口。定义一个MainActivity.java为应用的主Activity代码如下:

 <activity android:name=".activity1" android:label="@string/app_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>
            
</activity>

Android程序没有main函数,那Android程序的执行入口在哪儿

Android应用程序启动过程源代码分析

Android程序入口以及项目文件夹的含义和使用总结—入门

Android四大基本组件介绍与生命周期

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容