目录html
1.概述android
7.静态单列共享数据和Application对象共享数据的对比函数
经过学习Android提供的Application类,了解相关用法,对Application类进行扩展,主要用于维护应用中的全局状态(整个应用中的全局变量),好比qq中昵称在qq整个应用各处均可获取并使用。学习
Application和Activity,Service同样是Android框架的一个系统组件,当Android程序启动时系统会建立一个Application对象,是维护应用全局状态的基类,用来存储系统的一些信息。Android系统自动(默认的,无论你有没有定义)会为每一个程序运行时建立一个Application类的对象且只建立一个,因此Application能够说是单例(singleton)模式的一个类。以下清单文件mainiftest中的application就是整个基类。ui
每一个应用进程默认启动以后都会建立一个application对象,其余的组件能够经过全局上下文环境访问这个对象,可是application是系统定义的,咱们没法修改代码。好在咱们能够扩展application类,让Android系统使用咱们自定义的Application类建立Application对象。
第一步:自定义类继承Application基类
第二步:mainiftest文件中添加name属性
当程序运行时,咱们经过查看建立的Application对象,得知是咱们本身定义的MyApplication类
Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。不通的activity互相切换,可是Application对象都是同一个。
Application对象是有Android系统管理,他的回调函数运行于ui线程,也就是主线程,运行过程当中主要的回掉方法
由于Application是全局的单例的,因此在不一样的Activity,Service中得到的对象都是同一个对象。因此能够经过Application来进行一些,如:数据传递、数据共享和数据缓存等操做。以下,我么在自定义的Application类中定义一个变量,在响应的地方设置,也能够在响应的地方获取
咱们定义一个单列类
这样咱们在应用中也能够经过这个单列类进行数据共享,那么和Application相比较,静态单列模块化更好,Application至关于一个Context因此具备访问资源的能力,可是单列也能够经过接受Context参数进行访问资源,Application的回调和和生命周期彻底由Android系统控制,咱们没法干预,可是使用单列就更加灵活,推荐使用单列。