zoukankan      html  css  js  c++  java
  • 启动模式

    standard singleTop singleTask singleInstance
    什么时候该用哪种模式? final类无法被继承,没有子类

    *standard:系统默认启动模式
    Android是使用返回栈来管理Activity的,在standard模式下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。
    对于使用standard模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,而是每次启动活动都会创建该活动的一个新的实例。

    *singleTop:
    在启动Activity时,如果发现该返回栈的栈顶已经是该Activity时,则认为可以直接使用它,不会在创建新的Activity实例
    singleTop适合接收通知启动的内容显示页面。

    *singleTask:
    每次启动该Activity时,首先会在返回栈中检查是否存在该Activity的实例,如果发现已经存在就直接使用该实例,
    并把这个Activity之上的所有活动统统出栈,如果没有发现就会创建一个新的Activity实例。
    singleTask适合作为程序入口点。例如浏览器的主界面。不管从多少个应用启动浏览器,只会启动主界面一次,
    其余情况都会走onNewIntent,并且会清空主界面上面的其他页面。之前打开过的页面,打开之前的页面就ok,不再新建。
    (如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。)
    onNewIntent:Activity第一启动的时候执行onCreate()---->onStart()---->onResume()等后续生命周期函数,
    第一次启动Activity并不会执行到onNewIntent(). 而后面如果再有想启动Activity的时候,
    那就是执行onNewIntent()---->onResart()------>onStart()----->onResume().
    如果android系统由于内存不足把已存在Activity释放掉了,那么再次调用的时候会重新启动Activity即执行onCreate()---->onStart()---->onResume()等。
    当调用到onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的Intent。

    launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,
    但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法
    系统可能会随时杀掉后台运行的Activity,如果这一切发生,那么系统就会调用onCreate方法,而不调用onNewIntent方法,
    一个好的解决方法就是在onCreate和onNewIntent方法中调用同一个处理数据的方法

    *singleInstance:
    指定为singleInstance模式的Activity会启用一个新的返回栈来管理这个Activity,
    不管是哪个应用程序来访问这个Activity,都共用同一个返回栈,解决了共享Activity实例的问题
    singleInstance适合需要与程序分离开的页面。

    线程池: executorService
    ThreadPoolExecutor
    可缓存线程池CachedThreadPool
    定长线程池FixedThreadPool
    SingleThreadPool mFixedThreadPool = Executors.newSingleThreadPool();
    ScheduledThreadPool

  • 相关阅读:
    字节面试:谈谈索引为什么能提高查询性能?
    阿里云服务器(ECS)上搭建rocketmq
    如何在 CentOS 8 上安装 Apache Maven
    147 01 Android 零基础入门 02 Java面向对象 07 Java多态 05 接口(重点)05 关于多接口中重名默认方法处理的解决方案
    146 01 Android 零基础入门 02 Java面向对象 07 Java多态 05 接口(重点)04 接口成员--默认方法 & 静态方法
    145 01 Android 零基础入门 02 Java面向对象 07 Java多态 05 接口(重点)03 接口成员--抽象方法&常量
    tcp循环发消息
    tcp基本语法
    界面开发控件DevExpress WPF开发指南
    高性能H5/JS开发框架DevExtreme 2021新版首发
  • 原文地址:https://www.cnblogs.com/tozhjj/p/7205919.html
Copyright © 2011-2022 走看看