zoukankan      html  css  js  c++  java
  • android activity声明周期学习笔记

    android生命周期图:

    Activity继承了ApplicationContext;

    1:初次加载activity时顺序执行:onCreate()-->onStart()-->onResume()

    2:back键被按下之后会顺序执行:onPause()-->onStop()-->onDestroy()

    3:home键被按下之后会顺序执行:应用程序并没有销毁,onPause()-->onStop()(比如需要切换另一个应用程序,特殊情况:当新的activity采用透明主题,那么当前activity不会回调onStop())

    4:之后再次打开该应用程序,分别执行了onRestart()-->onStart()-->onResume()

    当需要在通过home键来回切换应用程序,并且保留每个应用程序view的相关内容的时候,需要重写activity的onPause()和onRestart()方法,用来保存切换应用程序之前的内容和恢复内容。

    其中看似类似的功能,onStart()&onStop  和  onResume()&onPause(),分别配对表示的意义不同而已, 前者从activity是否可见这个角度来回调的,后者从activity是否位于前台这个角度来回调的。。

    当两个activity切换时,第一个activity先pause,第二个activity才启动。所以在onPause()&onStop()中尽量不做耗时操作,从而使得新的activity尽快显示并切换到前台。

    activity启动:

    Instrumentation(Binder)----->AMS 请求(activityStack) 通过activityThread----->同步activity状态

    异常情况下的生命周期:

    1:在资源相关的系统配置发生改变导致activity被kill并重新创建:

    系统在activity异常终止的时候调用onSaveInstanceState和onRestoreInstanceState来存储和恢复数据,其它情况不会触发这个过程。

    2:资源内存不足导致低优先级的activity被kill:

    activity优先级:

    --前台activity:正在和user交互,优先级最高;

    --可见但非前台activity:比如activity中弹出了对话框,导致activity可见但是位于后台无法和用户直接交互;

    --后台activity:已经被暂停的activity,比如执行了onstop(),优先级最低

    如果一个进程中没有四大组件在执行,那么这个进程很快会被系统kill。

  • 相关阅读:
    Apache Kafka源码分析
    Apache Kafka源码分析
    Apache Kafka源码分析
    Apache Kafka源码分析
    如何保障流式处理的数据一致性
    Tuning Spark
    Java内存管理和垃圾回收
    Spark MLlib
    Win7系统与它的Virtualbox中安装的Ubuntu14.04共享信息的几种方法
    图片流量节省大杀器:基于CDN的sharpP自适应图片技术实践
  • 原文地址:https://www.cnblogs.com/newcoder/p/6068603.html
Copyright © 2011-2022 走看看