Android中Application组件的基础用法。

关于Application的一些用法的总结:

一、Application大家应该是不太陌生的。他有许多的自有特性可以帮助我们处理很多棘手的问题。本文也将从Application的特性着手,总结如何利用好Application。如果读者已经是对application相当了解,请绕行。

   Application是安卓系统组件之一,不在公认的四大核心组件之中,但是和activity、service相比有许多的共同点,最大的共同点都是Context的子孙类。很多人认为安卓应该有五大核心组件,其中就应该加上application。这是面试的一个坑。

二、Application的创建:

   1.Application的自动创建:每一个应用程序在运行时,系统都会自动帮你创建一个application类的对象,并且只会创建一个。

.  2.Application的手动创建:程序员可以自己创建一个类来继承自Application,但是需要在创建完毕之后在项目清单文件,即每一个安卓项目的倒数第四行的AndroidManifest.xml文件中进行注册。相对于其他组件来说Application的注册特别简单。因为每一个程序只能有一个application,所以直接在项目清单文件中的Application节点的属性中添加name属性即可。name属性可以直接提示。手写格式为类所在包名加“.”加类名。


三、Application的特性及灵活运用:

1Application的唯一性:每一个程序运行时只会存在一个Application程序运行会先启动Application(没有类来继承就自动运行),系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。

2application的先入后出属性:因为每一个程序进程都是在Application中运行的,所以Application在程序中是必须是最先运行,并且在所有的系统组件都退出之后才应该被销毁掉的,不然就无法保证程序每次的正常运行。这个特性就决定了Application的许多用途。

   1.整个系统在最开始运行时所需要的,并且会被多次调用的数据,可以直接在Application中进行准备,并且直接存储。其他地方调用会更加方便,避免了代码的重复以及不必要的一些代码的重复工作,降低了整个程序的运行消耗。


   2.Context对象的赋予:整个android中许多地方都要用到Context对象来调用Context的子孙类所拥有的的一些方法或者提供底层API的一些方法所需参数。因为application也是Context的子孙类,它继承自Context的子类ContextWrapper,所以就可以通过在它的onCreat()方法中对自身对象赋值,并提供一个返回值为Application的方法来为程序的其他类中提供Context的对象。具体代码更加简单:


   这里就提供了一个获取到context对象的方法。应用范围特别广,如下代码中,ContentResolver的初始化需要一个context对象来调用getContentResolver()方法。


 3.避免一些公用API对象的重用,减少内存的消耗。在上图中大家可以看到有一个Volley框架中的RequestQueue对象。了解Volley的应该都知道谷歌官网曾经明确提出,RequestQueue每一个程序都只需要构建一次,谷歌推荐使用单例,并且单例也足够解决你需要使用到的所有问题。因此将它创建在除application之外的任何地方都是不恰当的,都有可能出现重复创建的问题。

   4.数据的传递与存储:Application中可以自我的创建一些对象或集合等来进行类与类之间的数据传递。比如说在主界面中点击listview的一项item,需要跳转到其他activity中进行详细处理,这时就可以通过在点击跳转前将这个item数据的对象给Application中创建的同一个类的对象赋值,另一个activity激活时直接从Application中获取数据即可。很多地方数据的传输都可以用Application进行存储和获取,比如前几天有朋友碰到的一个activity与另一个activity中的fragment之间需要传递数据,想了很长时间没有想到合适的办法,这种就可以直接用application来进行操作,一边封装一边获取,仅此而已。

   灵活运用所学才是一个优秀程序员应该具有的素质。很多事情可以用特别简单的代码解决就用简单的代码完成,降低运行成本的同时也极大地增强了代码的可读性。在以后的不断工作中如果遇到其他Application的用法,会及时在这里给大家更新。


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值