Android四大组件

作者: 寒_蝉 | 来源:发表于2019-05-04 17:54 被阅读0次

    一、Activity

    Intent

    1. Action项,用来表示动作。
    2. Data项,当发起请求时,调用组件如果有明确的数据对象,通常就会用Data项来存储表示。
    3. Type项,Type是MINE格式的字符串数据,用于描述组件能够处理的请求类型,或者补充说明Data数据的类型,它可以通过通配符*来表示整个类别的信息。
    4. Category项,Category表示约束。每个Intent对象可包含多个Category项。而一个组件需要支持全部的Category才可能处理请求。
    5. Component项,它指的是目标组件的类型信息。
    6. Extras项,Intent中数据传输的载体,负责将数据从调用组件传递到实现组件。
    7. Flags项,Flags是一个整数型,由一系列的标志位汇集而成。

    生命周期

    Activity生命周期

    Fragment生命周期

    Fragment生命周期

    启动模式

    配置方式:

    1. AndroidManifest.xml中配置launchMode;
    2. Java中设置Intent.setFlags()。

    四种启动模式

    1. standard
      默认启动模式,每次启动Activity,无论任务栈中是否已经有这个Activity的实例,系统都会创建一个新的Activity实例。
    2. singleTop
      当一个singleTop模式的Activity已经位于任务栈的栈顶,再去启动它时,不会再创建新的实例,如果不位于栈顶,就会创建新的实例。
    3. singleTask
      在同一个Task内只有一个实例,如果Activity已经位于栈顶,系统不会创建新的Activity实例,和singleTop模式一样。但Activity已经存在但不位于栈顶时,系统就会把该Activity移到栈顶,并把它上面的activity出栈。
    4. singleInstance
      singleInstance Activity在整个系统里只有一个实例,启动一singleInstanceActivity时,系统会创建一个新的任务栈,并且这个任务栈只有他一个Activity。

    二、Service

    启动方式(Start&Bind)

    1. 其他组件调用startService()方法时,会触发onStartCommand()方法。当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。服务完成任务后可以调用stopSelf()方法停止,或者由其他组件调用stopService()方法停止。
    2. 使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。

    生命周期

    Service生命周期

    IntentService

    1. 当任务执行完后,IntentService会自动停止,不需要手动去控制或stopSelf();
    2. 可以启动IntentService多次,每一个耗时操作会以工作队列的方式在IntentService的onHandleIntent回调方法中执行,且每次只执行一个线程。

    三、Broadcast Receiver

    对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。

    四、Content Provider

    1. 使用Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
    2. 只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。
    3. ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。
    4. 开发人员不会直接使用ContentProvider类的对象,大多数是使用ContentResolver对象实现对ContentProvider的操作
    5. ContentProvider使用URI来唯一标识其数据集,这里的URI以content://作为前缀,表示该数据由ContentProvider来管理。

    相关文章

      网友评论

        本文标题:Android四大组件

        本文链接:https://www.haomeiwen.com/subject/mwkfoqtx.html