欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Application少为人知的用法

程序员文章站 2024-03-21 16:45:58
...
平常我们都是在onCreate初始化一些应用程序级的对象或配置,但是这还是Application众多用法的其中之一。

1.监听所有activity的生命周期


在onCreate函数里通过注册接口来实现

    @Override
    public void onCreate() {
        super.onCreate();
        Log.v(TAG_ONE,"onCreate");

        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                Log.v(TAG_ONE,"onActivityCreated");
            }

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

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

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

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

            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
                Log.v(TAG_ONE,"onActivitySaveInstanceState");
            }

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

效果

onCreate
onActivityCreated
onActivityStarted
onActivityResumed

2.监听手机内存占用,屏幕方向,低内存状况


同样是在onCreate里注册接口

        registerComponentCallbacks(new ComponentCallbacks2() {
            @Override
            public void onTrimMemory(int level) {
                Log.v(TAG_TWO,"onTrimMemory"+level);
            }

            @Override
            public void onConfigurationChanged(Configuration newConfig) {
                Log.v(TAG_TWO,"onConfigurationChanged"+newConfig.orientation);
            }

            @Override
            public void onLowMemory() {
                Log.v(TAG_TWO,"onLowMemory");
            }
        });

这里要提一句,这个接口的三个函数,我们都可以在Activity,Service里实现

onConfigurationChanged:可以监听屏幕方向变换

onLowMemory:当手机内存紧张时会触发这个函数,提醒应用释放一些资源来保证应用的存活。

onTrimMemory:监听内存等级,我应用一启动,这个就会说当前内存等级为80,也就是后台进程最危险的时候,我想想也是,当时程序只是创建了Application,Activity还在创建之中还没有显示;当我点击home键,使应用编程后台程序,说内存等级为20,就是前台程序变后台程序,我们可以在这个函数里释放一些UI资源,比如

内存等级说明如下图

Application少为人知的用法


参考文章:

https://www.jianshu.com/p/f665366b2a47




相关标签: Android Application