欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > Android >内容正文

Android

Android Activity 以及 Application 生命周期

发布时间:2025/5/22 Android 58 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Android Activity 以及 Application 生命周期 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在日常开发中(对又是日常开发)。你会发现很多逻辑如果只有onCreate和onDestory完全不够用。所以稍微系统的了解一下Activity生命周期的相关知识,也很有必要。

本篇简单学习Android Activity生命周期的相关知识。

Activity

Android 中所有的Activity都是由Activity栈来进行管理的。当切换到一个新的Activity时候,此Activiy会被压到栈顶部,之前的Activity会被压到栈底。

Activity的生命周期,可以从下方流程图看出。

1.1 一个Activity的完整生命周期 onCreate -> onStart -> onResume -> onPause -> onStop -> onDestory,称之为 entire lifetime.

2.2 当执行onStart回调方法的时候,Activity开始被用户所见。所以在onCreate的时候用户是看不到的,一直到onStop之前,此Activity都是可以被用户看到的。此阶段称之为 visible lifetime.

3.3 当执行onResume回调方法的时候,Activity可以开始和用户交互,一直到onPause方法之前。此阶段称之为foreground lifetime.

注:

  • onPause , 虽然Activity还是可见的 但大多数时候意味着用户即将离开这个Activity.所以在onPause中,你可以用来 1.停止运行的浪费cpu的操作 2.提交没有保存的修改 3.释放系统资源

  • onDestroy ,应该清除那些可能导致内存泄漏的地方。并且确保所有线程都被destroyed并且所有操作都被停止。

Activity 操作

1.1 从 A Activity 到 B Activity,

打开 A Activity

A onCreate -> A onStart -> A onResume

2.2 点击切换Activity按钮,

A onPause -> B onCreate -> B onStart -> B onResume -> A onStop

如果点击 back 按钮,依次降执行

B onPause -> A onRestart -> A onStart -> A onResume -> B onStop -> B onDestroy

B Activity从站顶弹出并销毁,此时 Activity 堆栈只有 A Activity。

3.3 如果再次点击 back 按钮

则执行 A onPause -> A onStop -> A onDestroy

4.4 如果点击的是 home 按钮

则执行 A onPause -> A onStop

注:

  • Android手机,开发者选项中有一个不保留活动的设置。从A Activity -> B Activity 会执行 A onDestroy,但是 A Activity还是处在Activity栈中。

  • 点击back 按钮 依次执行 B onPause -> A onCreate -> A onStart -> A onResume -> B onStop -> B onDestroy

finish()

finish()方法主要有两层含义

  • 将此Activity移除Activity栈

  • 调用此Activity的onDestroy

Tips:onBackPressed 默认实现是调用 finish()

Application

Application:

Base class for those who need to maintain global application state. You can
provide your own implementation by specifying its name in your
AndroidManifest.xml's <application> tag, which will cause that class
to be instantiated for you when the process for your application/package is created.

一个为保存全局变量设计的基本类。

public class App extends Application {@Overridepublic void onCreate() {// 程序创建的时候执行super.onCreate();}@Overridepublic void onTerminate() {// 程序终止的时候执行super.onTerminate();}@Overridepublic void onLowMemory() {// 低内存的时候执行super.onLowMemory();}@Overridepublic void onTrimMemory(int level) {// 程序在内存清理的时候执行super.onTrimMemory(level);}@Overridepublic void onConfigurationChanged(Configuration newConfig) {// 程序配置信息改变的时候执行super.onConfigurationChanged(newConfig);}}

onCreate:程序创建的时候初始化

onTerminate:这个方法在程序结束的时候会调用。但是这个方法只用于Android仿真机测试的时候,在Android产品机是不会调用的。所以这个方法并没什么用。

This method is for use in emulated process environments.

onLowMemory:监听Android系统整体内存比较低的时候,来释放一些不重要的资源,清理一下垃圾。

onTrimMemory(int level): level相当于一个权重,可以根据权重的值来做出相应的操作。int值越小越重要,int包括 5,10,15,20,40,60,80

Called when the operating system has determined that it is a good time for a process to trim unneeded memory from its process.

onConfigurationChanged:监听一些配置信息发生改变的事件(屏幕旋转),当配置信息发生改变的时候会调用这个方法

Tips:activity的configChanges,手机横竖屏切换的时候如果activity没有配置,activity会重启,而且不止一次。为了防止这种情况就需要用到configChanges。

// 横竖屏切换时就不会重新创建activity,还有很多其他配置参数`mmc`,`mnc` android:configChanges="orientation"

转载于:https://www.cnblogs.com/chenjy1225/p/9662272.html

总结

以上是生活随笔为你收集整理的Android Activity 以及 Application 生命周期的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。