zoukankan      html  css  js  c++  java
  • Android 四大组件及其相关

    【一】Activity

    #1 生命周期

    参考:https://blog.csdn.net/liuhe688/article/details/6733407

    #2 activity 与fragment生命周期对比

    #3 启动模式

    *1 standard 标准启动模式

    *2 singleTop 单一栈顶启动模式

    *3 singleTask 单一栈的启动模式

    *4 singleInstance 单一实例的启动模式

    *1 standard 标准启动模式

    standard是Activity默认的启动模式,在不指定Activity启动模式的情况下,所有Activity使用的都是standard模式。

    在standard模式下,每当启动一个新的Activity,它就会进入任务栈,并处于栈顶的位置,对于使用standard模式的Activity,系统不会判断该Activity在栈中是否存在,每次启动都会创建一个新的实例

    *2 singleTop 单一栈顶的启动模式

    singleTop模式与standard类似,不同的是,当启动的Activity已经位于栈顶时,则直接使用它不创建新的实例。如果启动的Activity没有位于栈顶时,则创建一个新的实例位于栈顶

    *3 singleTask 单一任务栈的启动模式

    如果希望Activity在整个应用程序中只存在一个实例,可以使用singleTask模式,当Activity的启动模式指定为 singleTask,每次启动该Activity时,系统首先会检查栈中是否存在该Activity的实例,如果发现已经存在则直接使用该实例,并将当前Activity之上的所有Activity出栈,如果没有发现则创建一个新的实例。

    *4 singleInstance 单一实例的启动模式

    在程序开发过程中,如果需要Activity在整个系统中都只有一个实例,这时就需要用到singleInstance模式。不同于以上介绍的三种模式,指定为singleInstance模式的Activity会启动一个新的任务栈来管理这个Activity。

    singleInstance模式加载Activity时,无论从哪个任务栈中启动该Activity,只会创建一个Activity实例,并且会使用一个全新的任务栈来装载该Activity实例。采用这种模式启动Activity会有两种情况:

    第一种:如果要启动的Activity不存在,系统会创建一个新的任务栈,在创建该Activity的实例,并把该Activity加入栈顶
    第二种:如果要启动的Activity已经存在,无论位于哪个应用程序或者哪个任务栈中,系统都会把该Activity所在的任务栈转到前台,从而使该Activity显示出来。

    【二】Service

     #1 生命周期

    *1 service分为绑定的和非绑定的服务,非绑定的也就是普通的,绑定的是一种和activity联系比较紧密的

    *2 BroadcastReceiver 只能通过startSrvicce启动service,因为广播本身的生命周期很短,bind的话,没有意义

     #2 远程Service通信(进程间Service通信)

    两个进程间的Service进行通信需要把对象序列化之后进行互相发送,android提供了一个AIDL工具来处理序列化和通信,这种情况下service需要以aidl文件的方式提供服务接口。AIDL工具会根据aidl文件自动生成一个相应的java接口,并且在生成的服务接口中包含一个功能调用的stub服务桩类。Service的实现类需要去继承这个stub服务桩类。Service的onBind方法会返回实现类的对象。当客户端应用连接到这个service时,onServiceConnected方法会被调用,客户端就可以获得IBindr对象(也就是服务端应用程序的服务)

    AIDL(Android Interface Definition Language)是Android接口定义语言的意思,它可以用于让某个Service与多个应用程序组件之间进行跨进程通信,从而可以实现多个应用程序共享同一个Service的功能。

    #3 启动方式

    显示启动和隐式启动

    【三】BroadcastReceiver

    【四】ContentProvider

  • 相关阅读:
    找水王
    用户体验评价
    人件集阅读笔记01
    第十四周学习进度
    第十三周学习进度
    第十二周学习进度
    第十一周学习进度
    梦断代码阅读笔记03
    团队项目-第一阶段冲刺-10
    Shell按行读取文件的3种方法
  • 原文地址:https://www.cnblogs.com/fanfusuzi/p/11091033.html
Copyright © 2011-2022 走看看