美文网首页
Android Fundamentals - Activity

Android Fundamentals - Activity

作者: GeoffreyHQ | 来源:发表于2018-07-27 17:45 被阅读0次

    Activity

    • Activity 是一个 Android 应用与用户交互的入口。
    • Activity 是为 Android 应用提供绘制界面的窗口,一般来说,一个 Activity 就是 Android 应用的一个屏幕。

    Activity 生命周期

    Activity lifecycle

    Activity 状态

    Activity states

    📍 Android 系统在内存紧张时会杀死一些进程来释放内存。一个进程会不会被杀死取决于这个进程当时的状态,而 Android 应用进程的状态和正运行在该进程中的 Activity 的状态有关。
    📍 系统不会直接杀死 Activity 来释放内存,而是杀死这个 Activity 所在的整个进程🔗 Official Doc

    Activity按被系统回收的可能性又可分为以下四个状态:

    • 活动状态 (running)
    • 暂停状态 (paused)
    • 停止状态 (stopped)
    • 死亡状态 (killed/destroyed)

    1.活动状态(running)

    活动状态一般是指该 Activity 正处于屏幕最显著的位置上显示,即该 Activity 是在 Android 活动栈的最顶端。一般地当 Activity 创建后就是处于该状态中。
    期间触发的函数及顺序为: onCreate() -> onStart() -> onResume()

    2.暂停状态(paused)

    暂停状态一般指该 Activity 已失去了焦点但仍然是可见的状态(包括部分可见)。一个处于暂停状态的 Activity 只有在系统极度缺乏内存资源的情况下才会被系统强制结束。
    运行状态到暂停状态所触发的函数及顺序为:onResume() -> onPuased()
    暂停状态恢复至运行状态所触发的函数及顺序为:onPuased() -> onResume()

    3.停止状态(stopped)

    停止状态一般指该 Activity 被另一个 Activity 完全覆盖的状态,这是它仍然保持所有的状态,但是由于该 Activity 变得不可见,所以系统经常会由于内存不足而将该 Activity 强行结束。
    暂停状态到停止状态所触发的函数及顺序为:onPuased() -> onStop()
    停止状态恢复至运行状态所触发的函数及顺序为:onStop() -> onRestart() -> onStart() -> onResume()

    4.死亡状态

    死亡态是指该 Activity 被系统销毁。当一个 Activity 处于暂停状态或停止状态时就随处可能进入死亡状态,因为系统可能因内存不足而强行结束该 Activity。
    停止状态到死亡状态分为两种情况:(1)由用户操作导致,则执行:onStop() -> onDestroy()。(2)由系统自动强制执行,则该 Activity 被强行结束。

    状态保存和恢复

    当一个 Activity 非正常销毁时,系统会在 onStop() 方法前调用 onSaveInstanceState(bundle) 方法保存当前 Activity 的UI状态,在 Activity 再次创建的时候在 onStart() 后调用 onRestoreInstanceState(bundle) 恢复之前的状态。例如用户按 Home 键将当前应用置于后台、屏幕旋转等配置改变导致的 Activity 重建等情况。

    屏幕旋转

    当前 Activity 在 manifest 文件的注册中未指定 android:screenOrientation 属性时,屏幕旋转会使 Activity 销毁并重建,可通过以下方法保存和恢复之前的状态。

    • ⭕️(推荐)使用 onSaveInstanceState(bundle) 方法保存状态,onRestoreInstanceState(bundle) 恢复之前的状态。
    • 💔(不推荐)在 Activity 注册时配置 android:configChanges="orientation|keyboardHidden|screenSize"阻止销毁和重建,然后在 Activity 的 onConfigurationChanged(newConfig) 中处理相应逻辑。当 Activity 的重建代价太大且缓慢时考虑这种做法

    📚 更多内容:

    相关文章

      网友评论

          本文标题:Android Fundamentals - Activity

          本文链接:https://www.haomeiwen.com/subject/ufvgmftx.html