阅读更多

     Application 和Activity、Service一样是一个Android的系统组件,在程序被启动的时候android系统会创建一个单例的实例,Application的如何使用,又有哪些实际的作用呢?

 

   一、使用方式:

          1. 首先写一个类继承于Application;

          2.在mainifest中的Application标签中的   android:name 属性中指定你自己的Application类;

          3.通常在Activity中使用getApplication()来获得Application对象。

 

  二、它的作用:

     1.Application 是程序的入口,普通的java程序的入口是main函数,但是我们在android程序中似乎并没有写mian()函数,那么程序是从哪里开始执行的呢,答案就是从Application的OnCreate()方法开始的,我们写一个实例证明这一点;

public class MyApplication extends Application {@Overridepublic void onCreate() {Log.i("order", this.getClass().getName());super.onCreate();}}

 

    示例中唯一的一个Activity MainActivity

 

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.i("order", this.getClass().getName());}}

执行结果:




  从图上可以很清楚的看到,android程序启动后先调用了Application的OnCreate() 的方法,后面再调用的了Activity的OnCreate()方法,知道了这个,我们就可以把application中要初始化的数据放在application中,需要是直接获得。

 

2.传递对象

   在android中我们在两个Activity之间通常使用的是Intent来进行传递值,Intent传递一些基本的数据类型时候还比较方便,但是在传递对象的时候则需要这个对象类A实现了Serializable或者Parcellable接口,如果类A的成员变量中还包含有类B,那么类B也必须实现Serializable或者Parceallable接口,这样传递对象引用就先的非常的复制,但有了Application我们就不会那么麻烦了,还是刚刚的MyApplication类,对它进行一下扩充

public class MyApplication extends Application {public  HashMap Data=new HashMap();@Overridepublic void onCreate() {Log.i("order", this.getClass().getName());super.onCreate();}}

   我们对上面的类添加了一个HashMap为application成员变量,这样在传递对象引用的时候, 我们就可以把引用放到这个HashMap中,然后把它key通过Intent传递过去,再在通过getApplication()获得到Application,这样就可以通过application完成对象的传递,需要强调下的时可以这样做一个很重要的原因是Appliation它本身就是一个单例的,为了防止内存泄漏,我们在另一个Activity中接受到引用后,我们应该把这个引用从HashMap中remove掉。

 

3、缓存数据,已微信朋友圈为例,当进入朋友圈刷新后,可以把从网络上获得的数据放到Application中缓存起来,如果用户进入到其他页面然后有再回来到朋友圈,在用户没有刷新的情况下 ,我们就可以直接读取Appliation中的数据,减少网络访问,如果有一些特别大的数据内容(比如大图片),最好使用软引用的方式进行缓存防止内存溢出。

    

   Application 运用时一定要注意防止内存泄漏。出现“out Of Memery Error”

 

  

 

 

 

  • 大小: 3.8 KB
  • 查看图片附件

更多相关文章

  1. Android(安卓)内存溢出解决方案(OOM) 整理总结
  2. 分享17个老罗Android开发视频教程(免费下载)
  3. Android、iOS系统架构
  4. android 上 webkit js 扩展之全局本地对象实现步骤
  5. 我的android 第一天-电话拨号器
  6. 分享17个老罗Android开发视频教程(免费下载)
  7. Android(安卓)file类使用详解-SDcard
  8. android内存管理
  9. Android(安卓)UI开发专题

随机推荐

  1. Android(安卓)7.0软键盘隐藏问题
  2. 布局动画 属性初始 android:animateLayou
  3. Android 根据 Url 跳转应用
  4. Android 3.0 r1 API中文文档(108) ―― E
  5. 更新Android SDK Manager Mac下修改hosts
  6. Android反编译工具:Apktool,支持Linux 、Wi
  7. Android游戏开发系列教程第三讲(事件处理)
  8. android逐行读取文件内容以及保存为文件
  9. 如何查看android的wifi密码?究竟保存在哪
  10. Android(安卓)按压效果的工具类