小工具知识网

当前位置: 首页 > 行业知识 > Android studio Application类

行业知识

Android studio Application类

2026-11-08 22:57:26 来源:互联网转载

前言

我学习移动应用开发的时候,发现有教程要--新建MyApplication 继承Application,重写onCreate方法。

搜索完才知道,每个App里面都有一个Application,但是我们为什么还要自定义一个Application类呢?我们知道当App启动的时候,系统会自动加载并初始化Application类。Google 并不希望我们去自定义Application类。基本上只有需要做一些全局初始化的时候可能才需要用到自定义Application。

于是,想记录一下学习博客

目录

        定义

        特点

        方法介绍

        应用场景

        具体用法

        总结


定义

在Android中,Application类是所有Android应用程序的基类,也属于Android中的一个系统组件

继承关系:继承自 ContextWarpper 类

特点

实例创建方式:单例模式

每个Android App运行时,会首先自动创建Application 类并实例化 Application 对象,且只有一个 即 Application类 是单例模式(singleton)类

也可通过 继承 Application 类自定义Application 类和实例

实例形式:全局实例

即不同的组件(如Activity、Service)都可获得Application对象且都是同一个对象

生命周期:等于 Android App 的生命周期

Application 对象的生命周期是整个程序中最长的,即等于Android App的生命周期

方法介绍

attachBaseContext()

调用时刻:

在 Android 应用启动时,系统会首先调用 Application 的 attachBaseContext 方法。

作用:

attachBaseContext 方法主要用于进行一些初始化操作,这些操作通常不依赖于具体的 Context 对象。在这个方法中,你可以进行一些简单的操作,比如获取包名、设置一些全局变量等。此外,你还可以将传入的 Context 对象保存到 Application 对象中,方便全局使用。如果需要,你还可以在 attachBaseContext 方法中创建一个自定义的 ContextWrapper 对象,并将传入的 Context 对象作为参数传给它。

与 onCreate 的关系:

在 Android Application 的生命周期中,attachBaseContext 方法的执行顺序是先于 onCreate 方法的。这意味着,当你需要在应用程序启动时执行一些初始化操作时,你通常会首先在 attachBaseContext 中进行一些基本的、不依赖于具体 Context 的设置,然后在 onCreate 中进行更复杂的、可能需要具体 Context 的初始化操作。

具体使用:

public class MyApplication extends Application {        @Override      protected void attachBaseContext(Context base) {          super.attachBaseContext(base);          String packageName = base.getPackageName(); // 获取包名          // 设置全局变量或其他简单操作      }        @Override      public void onCreate() {          super.onCreate();          // 在这里进行耗时的初始化操作,比如加载网络数据、初始化数据库等      }  }

onCreate()

调用时刻:

当Application对象被创建时调用。

作用:

注:不宜执行耗时操作,以免影响到第一个Activity或Service的启动速度。

通常用于初始化一些全局资源或第三方框架。

具体使用:

public class MyApplication extends Application {        @Override    public void onCreate() {        super.onCreate();        Log.d("TAG", "onCreate: "+getPackageName()); // 打印获取包名    }  }

onConfigurationChanged()

调用时刻:

当设备的配置信息(如屏幕方向、键盘可用性等)发生改变时调用。

作用:

监听 应用程序 配置信息的改变,如屏幕旋转等。

具体使用:

public class MyApplication extends Application {    @Override    public void onConfigurationChanged(@NonNull Configuration newConfig) {        super.onConfigurationChanged(newConfig);        // 检查新的屏幕方向          if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {            // 屏幕现在是横向的              // 这里可以调整UI布局或执行其他操作以适应横向模式          } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {            // 屏幕现在是纵向的              // 这里可以调整UI布局或执行其他操作以适应纵向模式          }        // 检查键盘是否可用          if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_YES) {            // 键盘现在被隐藏了          } else if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {            // 键盘现在是可见的          }        // 处理其他配置变化...      }}

首先,在你的 AndroidManifest.xml 中为某个 Activity 设置 android:configChanges 属性:

      android:configChanges="keyboardHidden|orientation|screenSize"      // 设置该配置属性会使 Activity在配置改变时不重启,只执行onConfigurationChanged()      // 上述语句表明,设置该配置属性可使 Activity 在屏幕旋转时不重启

onLowMemory()

调用时刻:

当系统内存不足时调用。

作用:

注:onLowMemory() 方法是在 Android 4.0 之前的主要内存释放机制。在 Android 4.0 及之后的版本中,虽然 onLowMemory() 仍然可用,但系统提供了更精细的内存管理回调方法 onTrimMemory(int level)。

在这个方法中,应用程序应该释放一些不再需要的资源,以减轻系统的内存压力。

具体使用:

public class MyApplication extends Application {    @Override    public void onLowMemory() {        super.onLowMemory();            }}

onTrimMemory()

调用时刻:

通知 应用程序 当前内存使用情况(以内存级别进行识别)

作用:

根据level参数的值,应用程序可以决定释放哪些资源。level值越高,表示内存不足的严重性越高。

具体使用:

public class MyApplication extends Application    @Override    public void onTrimMemory(int level) {        super.onTrimMemory(level);        if (level >= ComponentCallbacks2.TRIM_MEMORY_MODERATE) {        }    }}

应用场景

从Applicaiton类的方法可以看出,Applicaiton类的应用场景有:(已按优先级排序)

  • 初始化 应用程序级别 的资源,如全局对象、环境配置变量等
  • 数据共享、数据缓存,如设置全局共享变量、方法等
  • 获取应用程序当前的内存使用情况,及时释放资源,从而避免被系统杀***
  • 监听 应用程序 配置信息的改变,如屏幕旋转等

    具体用法

    1. 继承 Application 类

    2. 在Manifest.xml文件中 标签里进行配置

     

    总结

    Android Application在Android应用程序中扮演着重要的角色,它提供了全局状态管理、生命周期管理和组件间数据共享的能力。通过合理地使用Application类,可以简化应用程序的结构、提高代码的可维护性和可重用性,同时优化应用程序的性能和用户体验。

上一篇:Python遍历文件夹包括特定字符的文件名和路径

下一篇:揭秘微赞获取微信素材的独家秘诀!