android Application讲解

基本概念
Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个 Application对象,用来存储系统的一些信息。
Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。
通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,那也很简单!创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(只需要给application标签增加name属性,并添加自己的 Application的名字即可)。
启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。
Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。
生命周期
Application 对象的生命周期是整个程序中最长的,即等于Android App的生命周期。
方法介绍
在这里插入图片描述
onCreate()
Application 实例创建时调用,Android系统的入口是Application类的 onCreate(),默认为空实现,初始化 应用程序级别 的资源,如全局对象、环境配置变量、图片资源初始化、推送服务的注册等。注意不要执行耗时操作,否则会影响应用的启动速度。
registerComponentCallbacks() & unregisterComponentCallbacks()
注册和注销 ComponentCallbacks2回调接口

registerComponentCallbacks(new ComponentCallbacks2() {
// 接口里方法下面会继续介绍
            @Override
            public void onTrimMemory(int level) {

            }

            @Override
            public void onLowMemory() {

            }

            @Override
            public void onConfigurationChanged(Configuration newConfig) {

            }
        });

onTrimMemory()
通知 应用程序 当前内存使用情况(以内存级别进行识别)根据当前内存使用情况进行自身的内存资源的不同程度释放,以避免被系统直接杀掉 & 优化应用程序的性能体验
在这里插入图片描述

registerComponentCallbacks(new ComponentCallbacks2() {

@Override
  public void onTrimMemory(int level) {
  // Android系统会根据当前内存使用的情况,传入对应的级别
  // 下面以清除缓存为例子介绍
    super.onTrimMemory(level);
  .   if (level >= ComponentCallbacks2.TRIM_MEMORY_MODERATE) {
        mPendingRequests.clear();
        mBitmapHolderCache.evictAll();
        mBitmapCache.evictAll();
    }

        });

onLowMemory()
监听 Android系统整体内存较低时刻,OnTrimMemory() & OnLowMemory() 关系
1,OnTrimMemory()是 OnLowMemory() Android 4.0后的替代 API;
2,OnLowMemory() = OnTrimMemory()中的TRIM_MEMORY_COMPLETE级别;
3,若想兼容Android 4.0前,请使用OnLowMemory();否则直接使用OnTrimMemory()即可
onConfigurationChanged()
监听 应用程序 配置信息的改变,如屏幕旋转等
registerActivityLifecycleCallbacks() & unregisterActivityLifecycleCallbacks()
注册 / 注销对 应用程序内 所有Activity的生命周期监听

//声明一个监听Activity们生命周期的接口
    private ActivityLifecycleCallbacks activityLifecycleCallbacks = new ActivityLifecycleCallbacks() {
        /**
         * application下的每个Activity声明周期改变时,都会触发以下的函数。
         */
        @Override
        public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        }

        @Override
        public void onActivityStarted(Activity activity) {
            Log.d(TAG, "onActivityStarted.");
        }

        @Override
        public void onActivityResumed(Activity activity) {
            Log.d(TAG, "onActivityResumed.");
        }

        @Override
        public void onActivityPaused(Activity activity) {
            Log.d(TAG, "onActivityPaused.");
        }

        @Override
        public void onActivityStopped(Activity activity) {
            Log.d(TAG, "onActivityStopped.");
        }

        @Override
        public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
        }

        @Override
        public void onActivityDestroyed(Activity activity) {
            Log.d(TAG, "onActivityDestroyed.");
        }
    };

onTerminate()
应用程序结束时调用
应用场景
1, 初始化 应用程序级别 的资源,如全局对象、环境配置变量等
2,数据共享、数据缓存,如设置全局共享变量、方法等
3,获取应用程序当前的内存使用情况,及时释放资源,从而避免被系统杀死
4,监听 应用程序 配置信息的改变,如屏幕旋转等
5,监听应用程序内 所有Activity的生命周期
特别注意
使用Application如果保存了一些不该保存的对象很容易导致内存泄漏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值