Application少为人知的用法

标签: Android Application
423人阅读 评论(0) 收藏 举报
分类:
平常我们都是在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资源,比如

内存等级说明如下图



参考文章:

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




查看评论

75项世界上少为人知的事!

1.没有一张纸可对摺超过7次2.根据统计每年驴仔所杀的人比飞机失事所死的人还多3.人睡觉比坐著看电视所消耗的卡路里还多4.第一种有条码的物件是香口胶5.Wright’sBrother发明飞机後第一次试...
  • happyxiaochen
  • happyxiaochen
  • 2007-03-17 18:53:00
  • 831

Java 中少为人知的小点子

  • 2008年09月12日 10:57
  • 42KB
  • 下载

HTML中少为人知的个性化标记

  • 2009年05月05日 17:30
  • 6KB
  • 下载

安卓系统十个应用

  • 2012年12月03日 18:34
  • 160KB
  • 下载

《贝多芬传》

摘录 ‘我称为英雄的,并非以思想或强力称雄的人;而只是靠心灵而伟大的人。’ —— 译者傅雷 ‘若愿素心相赠,无妨悄悄相传;两情脉脉,勿为人知。’ —— 塞巴斯蒂安 巴赫 除了仁慈以外,我不承认还有什么...
  • doc_peter
  • doc_peter
  • 2014-01-08 09:38:11
  • 386

少为人知的龙胆花

云南八大名花之一的龙胆花,即使是云南人对这花也了解甚少 龙胆花在云南共有130多个品种。这只是其中极少的几种。龙胆花是龙胆系龙胆科龙胆属植物的统称,该属产于温带各地;我国247种,云南有130余种,占...
  • killer000777
  • killer000777
  • 2008-06-26 11:30:00
  • 2246

少为人知的WordPress隐藏功能

被隐藏的设置页面输入wordpress访问地址加/wp-admin/options.php,你会发现一个从没见过的的页面。这个页面列出了 WordPress数据库里的所有选项。 其中甚至包括一些后台菜...
  • gjpdeyx
  • gjpdeyx
  • 2010-05-11 13:03:00
  • 2139

DDE技术--vb例程 (源码)

  • 2008年08月25日 16:32
  • 18KB
  • 下载

微软操作系统一个罕为人知的无敌命令

  • 2008年08月05日 22:17
  • 25KB
  • 下载

一个罕为人知的秘密 (Command Processor 内部命令)

  • 2008年03月09日 21:55
  • 8KB
  • 下载
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 11万+
    积分: 3220
    排名: 1万+
    博客专栏
    最新评论