• 安卓应用程序的生命周期


    (1)前台(Foreground)进程
    与用户当前正在做的事情密切相关,不同的应用程序组件能够通过不同的方法使它的宿主进程移到前台。当下面任何一个条件满足时,都可以考虑将进程移到前台。
    进程正在屏幕的最前端运行一个与用户交互的Activity(它的onResume()方法被调用);
    进程有一个正在运行的BroadcastReceiver(它的BroadcastReceiver.onReceive()方法正在执行);
    进程有一个Service,并且在Service的某个方法(Service.onCreate()、Service.onStart()或者Service.onDestroy())内有正在执行的代码。
    (2)可见(Visible)进程
    它有一个可以被用户从屏幕上看到的Activity,但不在前台——其onPause()方法被调用。例如:如果前台的Activity是一个对话框,以前的Activity隐藏在对话框之后,就可能出现这种进程。这样的进程很重要,一般不允许被杀死,除非为了保证前台进程的运行不得不这样做。

    (3)服务(Service)进程
    有一个已经用startService() 方法启动的Service,虽然这些进程用户无法直接看到,但它们做的事情却是用户所关心的(例如:后台MP3回放或后台网络数据的上传/下载)。因此,系统将一直运行这些进程,除非内存不足以维持所有的前台进程和可见进程。
    (4)后台(Background)进程
    拥有一个当前用户看不到的Activity(它的onStop()方法被调用),这些进程对用户体验没有直接的影响。如果它们正确执行了Activity生命周期,系统可以在任意时刻杀死进程来回收内存,并提供给前面3种类型的进程使用。系统中通常有很多这样的进程在运行,因此要将这些进程保存在LRU 列表中,以确保当内存不足时用户最近看到的进程最后一个被杀死。
    (5)空(Empty)进程
    不包含任何处于活动状态的应用程序组件。保留这种进程的唯一原因是,当下次应用程序的某个组件需要运行时,不需要重新创建进程,这样可以提高启动速度。
    以上所说的“进程”是从系统运行的角度考虑的,各种不同的进程可以理解成Android的各种组件的不同状态机(state machine)。如果从应用程序的代码以及运行情况考虑,可以关注Android的各种组件相对应的生命周期。

  • 相关阅读:
    python: 字符串按空格分成列表split与加密密码maketrans
    android 几个工具方法
    华硕N43sl VNP 连接问题 800 807 621
    git 创建新项目,下载工程,合并和更新工程简单应用记录
    android分析windowManager、window、viewGroup之间关系(二)
    android分析windowManager、window、viewGroup之间关系(一)
    meta-data获取小结
    转载: 项目经验分享
    不想写代码了
    MapReduce源码分析总结(转)
  • 原文地址:https://www.cnblogs.com/running-mydream/p/4446013.html
Copyright © 2020-2023  润新知