zoukankan      html  css  js  c++  java
  • android 处理生命周期事件

    引用:http://marshal.easymorse.com/archives/1501

    一些Activity可能比另外一些要重要,比如一个打进来的电话比正在玩的游戏重要;另外,android作为手机系统,内存小于台式机或者笔记本。

    有时,当前的Activity可能会发现被关闭,是因为其他Activity需要运行,系统需要当前Activity释放内存资源。可以将这些看做是生命周期,当前的Activity消亡了,其他的则活了。

    Activity的状态

    1. 活跃的(active):用户启动了Activity,并正在前台运行中;
    2. 暂停(pause):用户启动了Activity,正在运行,而且可见,但是一个通知或者其他的提示出现在屏幕的最上层,此时可以看到Activity但是不能和它交互。比如有电话进来,用户可以选择接听或者忽略;
    3. 停止(stop):用户启动了Activity,正在运行,但是因为其他Activity的启动或者切换而隐藏。这时该activity不能直接操作,除了通过通知;
    4. 消亡(dead):activity不在是启动的,比如电话做了重置(reset),或者activity被终止,比如因为内存不够了。

    与activity状态相关的方法

    android系统通过调用一些约定的activity方法,来转换activity的状态。

    onCreate()方法和onDestroy()方法

    onCreate()方法被调用的情况:

    1. 当activity第一次被创建的时候,带null参数;
    2. 如果activity已经运行过,后来被kill掉,将调用带Bundle参数的onCreate()方法,该参数来源于onSaveInstanceState()
    3. 当activity处于不同的设备状态时,比如从竖显到横显,将会调用onCreate()方法重建activity

    onDestroy被调用的情况,即当activity关闭的情况:

    1. activity执行了finish()方法
    2. android需要RAM,可能会紧急关闭activity

    需要注意的是,如果内存十分紧急,可能不会调用onDestroy方法,而是系统不顾一切的关闭掉,比如来电话的时候。onDestroy()通常用于释放在onCreate()方法中获得的资源。

    onStart()、onRestart()和onStop()方法

    activity在前台执行,可能因为是第一次启动,或者从隐藏状态重新带回前台(比如其他的activity或者来电话)。以上情况都会执行onStart()。

    onRestart()方法会在activity已经停止,重新开始的时候调用。

    onStop()方法在activity要停止的时候调用。

    onPause()和onResume()方法

    onResume()方法在activity要前台运行的时候执行,比如第一次初始启动后,或者从停止(stop)状态重新开始,或者当一个弹出对话框被清除(比如来电话)。这是刷新UI的最佳位置,可以在此方法中刷新视图,或者调用后台线程更新UI。

    相应的,当其他activity夺取了当前activity的控制权后,需要调用当前activity的onPause()方法。在此方法中,应该取消任何在onResume()方法中做的事情。比如关闭后台线程,释放任何独占方位的资源(比如摄像头)。

    一旦onPause()方法被调用,android系统将保留对此activity所在进程在任何时刻kill的权利。因此在此状态下不会可靠的收到将来的事件消息。

    对状态的合理处理

    一般情况下,上述方法会处理应用程序通用的事情。比如通过onCreate()方法关联出最后的UI,通过onPause()方法关闭后台线程。

    但有时需要为activity保存状态。比如有个计算器程序activity,计算结果后,可能又做了其他事情,用户回头想查刚才计算的结果。因为计算器有可能因为内存稀缺而关闭。

    这时需要使用onSaveInstanceState()方法,android会通过该方法保存状态,可以覆盖该方法保存自己的状态值到Bundle。

    然后通过onCreate()或者onRestoreInstanceState()方法得到Bundle对象实例恢复这些自定义状态。

  • 相关阅读:
    AX 2012 Security Framework
    The new concept 'Model' in AX 2012
    How to debug the SSRS report in AX 2012
    Using The 'Report Data Provider' As The Data Source For AX 2012 SSRS Report
    Deploy SSRS Report In AX 2012
    AX 2012 SSRS Report Data Source Type
    《Taurus Database: How to be Fast, Available, and Frugal in the Cloud》阅读笔记
    图分析理论 大纲小结
    一文快速了解Posix IO 缓冲
    #转载备忘# Linux程序调试工具
  • 原文地址:https://www.cnblogs.com/sode/p/2643393.html
Copyright © 2011-2022 走看看