一、Application是什么

Application翻译成汉语就是“应用”的意思,可以简单的把它理解为应用程序,也就是你的APP;它是和四大组件平级的Android系统组件。每个应用程序只有一个Application,它算是整个应用程序的入口点。相当于main函数(实际上不是的)。

二、Application有什么用

1、共享数据:在任何组件中都可以通过getApplication()或getApplicationContext获取Application对象,因此可以在组件间共享数据;
2、缓存数据:同上可以进行数据缓存;
3、超前初始化:因为它是整个程序形式上的入口点,可以在它的生命开始时进行一些初始化;
4、管理其它组件:因为它的生命周期是整个程序的运行过程,所以可以控制管理其它组件。

三、Application生命周期

一句话:程序的整个运行过程
用生命周期函数表示:
*onCreate()//程序启动时调用(不保证每次都被调用哦,因为有时你退出程序是没有完全退出的,见下面的彻底退出程序)

onConfigrationChanged()//配置改变时调用

onTrimMemory()//释放内存是调用

onLowMemory()//内存不足时被调用

onTerminate()//程序中止时调用,也不是一定会调用,程序非正常退出也是不调用它的一般不使用

四、Application怎么用

1、自定义一个类继承Application,如:
public class AppContext extends Application {……}
2、在AndroidManifest.xml中的application标签中配置android:name=".AppContext"
这样你就可以使用了
注意:全局只有一个Application所以它内部是用了单例模式的

五、彻底关闭Application

一个方法而已,但真的很管用:

/*** 彻底退出APP*/public void exitApplication() {int currentVersion = android.os.Build.VERSION.SDK_INT;//获取当前版本if (currentVersion > android.os.Build.VERSION_CODES.ECLAIR_MR1) {Intent startMain = new Intent(Intent.ACTION_MAIN);startMain.addCategory(Intent.CATEGORY_HOME);startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(startMain);System.exit(0);//退出的重点在这里} else {// android2.1ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);am.restartPackage(getPackageName());//2.1以下用这个}}
//只有彻底退出的Application才会使onCreate()一定会被调用

六、小结

Application作为生命周期最长的Android系统组件,还是很常使用的,主要用的就是其它组件管理、共享数据、初始化、内存不足是的处理、程序崩溃异常处理。但使用时一定要谨慎:
1、不要初始化太多太耗时的东西,会导致进入主Activity很慢,显示黑屏;
2、不要缓存太多数据,很占内存的好不啦,程序也容易卡;
3、各生命周期都不是一定被调用、有些必要的配置信息不要随意放在这里。

你知道Application吗?相关推荐

  1. Ubuntu 16.04 安装 Docker - Dependency failed for Docker Application Container

    Docker 安装 由于 apt 官方库里的 Docker 版本可能比较旧,所以先卸载可能存在的旧版本: sudo apt-get remove docker docker-engine docker ...

  2. SpringCloud配置文件 application.yml和 bootstrap.yml区别,执行顺序

    说在前面 SpringBoot默认支持properties和YAML两种格式的配置文件.前者格式简单,但是只支持键值对.如果需要表达列表,最好使用YAML格式.SpringBoot支持自动加载约定名称 ...

  3. Installation failed with message Invalid File:(Application Installatino Failed)

    导入一个demo 运行发现上图问题, Application Installation Failed 最后自己清理下工程就好了 参考方法: Click Build tab ---> Clean ...

  4. Manifest merger failed : Attribute application@allowBackup value=(false) 解决方法

    导入开源库出现上述错误 处理方法 在manifest中添加 xmlns:tools="http://schemas.android.com/tools" 然后在 applicati ...

  5. Android采用Application总结一下

    什么是 Application Application和Activity,Service由于是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象.用 ...

  6. maven项目密码md5加密_加密Spring Boot中的application.properties

    1 概述 什么?都2020年了还在Spring Boot的配置文件中写明文密码? (虽然是小项目,明文也没人看.) (明文简单快捷方便啊!!! ) (你看直接用户名root密码123456多么简单!! ...

  7. 在rMBP上利用Python的onetimepass库实现Google Authenticator Application的效果

    安装onetimepass库 在Mac上最简单的安装方法是 sudo pip install onetimepass 这里我遇到一个问题,参见 http://blog.csdn.net/tao_627 ...

  8. 微软压力测试工具 web application stress

    WEB服务器的压力测试工具~ 115808 2009年8月1日 lbimba 铜牌会员 这里给广大的煤油推荐一个web网站压力测试工具.它可以用来模拟多个用户操作网站,在程序投入运行时,可以用它来进行 ...

  9. 【转】Flex Application 初始化顺序

    转自:http://www.jexchen.com 大家都知道,我们在编写Flex应用程序时,通常是以<mx:Application>标签作为开头,实际上,Flex应用程序在启动运行的时候 ...

  10. 2008开年大礼:《Application = Code + Markup》中文版面世

    Charles Petzold的又一部经典力作<Application = Code + Markup>中文版终于要面世了.成为2008 开年大礼.相信有很多对WPF有兴趣,但又苦于没有经 ...

最新文章

  1. python pandas 遍历 DataFrame
  2. linux 块设备驱动(二)——块设备数据结构
  3. 面试前可以在这里刷刷题,很巴适!(Java版)
  4. 【经典回顾】YouTube 深度学习推荐系统的十大工程问题(附论文下载链接)
  5. quartus仿真19:JK触发器序列1001检测器
  6. (06)vtk修改默认鼠标操作,实现鼠标按键控制模型旋转
  7. 在线pdf转word
  8. Visio绘制神经网络层Layer
  9. JAVA学习笔记 || 使用Point 类的注意事项
  10. 项目建议书模板doc_简历模板大全,直接可以下载使用的简历模板
  11. Modis数据下载与处理(mrt、wget)
  12. 最简单的直播礼物连刷特效制作(带源码)
  13. 彻底删除win10易升
  14. IDEA中添加翻译插件
  15. 十大经典的心理学效应
  16. vue-awsome-swiper稳定版本3.1.3及使用方法,API见swiper官网https://www.swiper.com.cn/api/index.html
  17. Dense biased networks with deep priori anatomy and hard region adaptation: Semi-supervised learning
  18. 天天炫斗服务器维修,天天炫斗连接服务器超时怎么办|天天炫斗连接服务器超时解决方法_好特教程...
  19. Imitation Learning
  20. PHP isset()与empty()的区别

热门文章

  1. 解答java中如何求数组长度?
  2. dell idrac 复位_dell idrac 初始化失败_开机特别慢_服务器维修
  3. nginx根据域名后缀流入不同的项目
  4. 学术论文的一些注意点
  5. 如何用三只小猫启动tomcat关联eclipse
  6. 越狱中Michael的一种疾病
  7. 数字信息化时代,VR会议开启商务云洽谈新方式
  8. python类的参数_在Python中使用类中的参数
  9. 关于个人博客,你需要提前了解的那些事
  10. aip通用文档 服务器,航行资料汇编AIP CHINA 用航空局CAAC ENR .- ENR ..pdf