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 { @Override public void onCreate() { Log.i("order", this.getClass().getName()); super.onCreate(); } }
示例中唯一的一个Activity MainActivity
public class MainActivity extends Activity { @Override protected 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<String , Object> Data=new HashMap<String, Object>(); @Override public 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”
相关推荐
本文从Android的运行机制入手,重点介绍了Application类的重要性和使用方法。通过本文的学习,读者应该能够更好地理解和运用Application类,从而提升Android应用程序的开发效率和质量。需要注意的是,随着Android...
总结,虽然Application看似方便地提供了全局缓存的途径,但其潜在问题不容忽视。开发者应根据数据类型和需求选择合适的缓存机制,确保数据的安全性和应用的稳定性。通过合理利用Android提供的缓存框架和第三方库,...
### Android Application 对象详解 #### 一、Application 组件概述 **Application** 是 Android 框架中的一个重要组件,与 **Activity**、**Service** 并列为四大组件之一。它在应用程序启动时由系统自动创建,并...
根据提供的文件信息,我们可以总结出以下关于《Android Application Development For Dummies》的关键知识点: ### 一、书籍概述 - **书名**:《Android 应用程序开发傻瓜书》(Android Application Development ...
在Android开发中,插件化技术是一种...总结,Android Application插件化技术是Android开发中的一个重要领域,它提供了灵活的功能扩展和管理方式。通过理解其工作原理并实践,开发者可以构建出更加高效、易维护的应用。
通常,Android应用默认会使用`android.app.Application`,但为了实现特定功能或存储全局变量,我们可能会选择创建自定义的`Application`子类。在`CustomApplication`这个例子中,我们需要创建一个名为`Custom...
根据提供的文件信息,我们可以总结出一系列关于Android应用开发的基础知识点,尤其适合初学者。下面将对这些知识点进行详细的阐述。 ### Android应用开发基础知识 #### 一、了解Android平台 - **定义**:Android...
总结来说,`application.mk`适用于简单的原生库构建,而CMake则提供了更强大、更现代化的构建解决方案。在选择构建方法时,应根据项目需求和团队熟悉程度来决定。无论采用哪种方式,Android NDK都是Android平台上...
以上就是 Android 中常用的控件总结大全,包括 Src 文件夹、Res 文件夹、AndroidManifest.xml 文件、Application 节点、Activity 节点、Intent_Filter 节点和 String.xml 文件的使用方法。掌握这些控件的使用是开发 ...
总结,Activity跳转、Intent使用、startActivityForResult/onActivityResult以及通过Application Context实现共享数据是Android开发中的核心知识点。理解并熟练运用这些概念,可以帮助开发者构建功能丰富且健壮的...
### 专业知识点总结:《Professional Android 4 Application Development》 #### 一、书籍概述与目标读者 本书由Wrox出版社出版,旨在为开发者提供全面深入的Android 4应用程序开发指南。作者Reto Meier是Google的...
- **附录B:使用Android模拟器**:模拟器是测试应用不可或缺的工具之一,本节将教授如何设置和使用模拟器来进行调试工作。 - **附录C:练习答案**:书中提供了大量练习题帮助读者巩固所学知识,并给出了参考答案。 ...
### 《Professional Android 2 Application Development》核心知识点总结 #### 一、书籍简介与背景 《Professional Android 2 Application Development》是一本专为Android开发者设计的技术书籍,主要针对Android ...
#### 三、总结 本文主要介绍了如何创建一个简单的Android计算器应用。通过遵循上述步骤,您可以成功地创建一个能够执行乘法运算的计算器应用,并且还可以通过Robotium等工具进行自动化测试。此外,通过学习项目结构...
因此,直接使用`Application.Quit()`可能会与Android系统的预期行为冲突,导致用户体验下降。更合适的处理方式是模仿原生Android应用的行为,监听返回键事件并实现适当的导航逻辑。 在Unity3D中,可以使用以下方式...
这篇总结将深入探讨如何在Android应用中有效地使用WebView以及其相关的功能和优化策略。 1. **WebView基本使用** - `WebView`是Android SDK提供的一种控件,它能够加载并显示网页。通过`setWebViewClient()`和`...