Android Application的理解和使用

原创 2016年06月01日 16:18:25

Android Application 的理解和使用

1.API
extends ContextWrapper
implements ComponentCallbacks2
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.app.Application

Base class for those who need to maintain global application state. You can provide your own implementation by specifying its name in your AndroidManifest.xml’s “application” tag, which will cause that class to be instantiated for you when the process for your application/package is created.

2.理解
Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息。

Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。

一般情况下我们是不需要指定一个Application的,系统会自动创建,但当我们在做比较大的项目时,可能需要使用第三方库(比如友盟啊,融云啊 blabla的),第三方库要求在Application 类中实例化或注册一些对象,这时候需要自己自定义一个Application类,这只需要创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(给application标签增加name属性,并添加自己的 Application的名字)即可。

启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。那么在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。

Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。

3.举例

public class MyApplication extends Application{

    private String value;

    @override
    public void onCreate() {

        super().onCreate();
        //do something

    }

    public String getValue() {

        return value;

    }

    public void setValue(String value) {

        this.value = value;

    }
}

这样,在整个程序中都可以对value进行操作。这种全局变量方法相对静态类更有保障,直到应用的所有Activity全部被destory掉之后才会被释放掉。

注意在AndroidManifest.xml 文件中配置MyApplication

<application
    android:name = ".MyApplication"><!-- 注意MyApplication的文件路径,不过一般IDE会给提示-->
</application>

使用时只需要调用Context的 getApplicationContext或者Activity的getApplication方法来获得一个Application对象,然后再得到相应的成员变量即可。它是代表应用程序的类,使用它可以获得当前应用的主题和资源文件中的内容等,这个类更灵活的一个特性就是可以被继承,来添加自己的全局属性。

参考文章

相关文章推荐

Android Application理解

Application概念 /**  * Base class for those who need to maintain global application state. You can  * ...

Android Application 理解

1:Application是什么?           Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 a...

Android application对象的使用 全局变量

http://www.cnmsdn.com/html/201109/1316080337ID10097.html  Application的使用   What is Application...
  • cynhafa
  • cynhafa
  • 2011年10月17日 18:31
  • 4702

Android Application使用

Application 配置全局Context 第一步、写一个全局的单例模式的MyApplication继承自Application 覆盖onCreate ,在这个方法里面实例化Applicatio...

android Application 类的使用

Application的使用   What is Application   Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启...

android application的使用方法

如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用App...
  • hyjzcy
  • hyjzcy
  • 2012年09月14日 07:48
  • 218

Android Application的使用及其生命周期

摘要: 1. Application的使用 2. Application的生命周期 ---------------------------------------------------- 工...

Android Application类的使用

Application 源码中描述的大概意思是:Application类是保存全局变量的基类,我们可以自定义一个类继承Application,然后在AndroidManifest.xml的< appl...

使用Android application测试API

我目前suozai如何使用Android application测试研发人员
  • windhoo
  • windhoo
  • 2014年05月22日 23:22
  • 362

Android Application详解和使用

Android Application详解和使用 能爬上金字塔顶峰的只有两种动物,雄鹰和蜗牛,我既然做不了雄鹰,就做一只蜗牛吧。 研究一个新的东西,从哪几方面开始,我觉得可以从这几方面: 它是什...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Application的理解和使用
举报原因:
原因补充:

(最多只允许输入30个字)