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中ClassLoader源码解析之真的是你认为的ClassLoader

1.前言 首先,阅读本文章之前,需要了解java中的ClassLoader的基本原理,包括java中的三级ClassLoader机制以及ClassLoader的委托机制,否则下面的内容会不知道在讲什么...
  • u010014658
  • u010014658
  • 2016年09月19日 16:54
  • 1877

Android深入理解Context(一)Context关联类和Application Context创建过程

Context也就是上下文对象,是Android较为常用的类,但是对于Context,很多人都停留在会用的阶段,这个系列会带大家从源码角度来分析Context,从而更加深入的理解它。...
  • itachi85
  • itachi85
  • 2017年06月01日 00:32
  • 2195

安卓学习笔记之理解Window与WindowManager

Window的概念 Window表示的是一个窗口的概念,它是一个抽象类,它的具体实现是PhoneWindow。创建一个Window需要通过WindowManger来完成。WindowManger是外...
  • qq_28261343
  • qq_28261343
  • 2016年08月28日 21:10
  • 1686

Android Application理解

Application概念 /**  * Base class for those who need to maintain global application state. You can  * ...
  • Mr_LiaBill
  • Mr_LiaBill
  • 2015年09月10日 18:54
  • 611

Android Application 理解

1:Application是什么?           Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 a...
  • tianyeming
  • tianyeming
  • 2015年11月25日 18:23
  • 228

Android Application的使用及其生命周期

摘要: 1. Application的使用 2. Application的生命周期 ---------------------------------------------------- 工...
  • Guofengpu
  • Guofengpu
  • 2016年09月25日 15:45
  • 449

Android application对象的使用 全局变量

http://www.cnmsdn.com/html/201109/1316080337ID10097.html  Application的使用   What is Application...
  • jeanszu
  • jeanszu
  • 2012年04月14日 15:14
  • 325

android Application 类的使用

Application的使用   What is Application   Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启...
  • darling757267
  • darling757267
  • 2012年04月25日 10:52
  • 303

android application的使用方法

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

Android Application的使用及其生命周期

摘要: 1. Application的使用 2. Application的生命周期 —————————————————- 工程代码:LearnContext.zip —————————————————...
  • HZHXH
  • HZHXH
  • 2017年05月14日 11:27
  • 411
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Application的理解和使用
举报原因:
原因补充:

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