Android Application的理解和使用

本文详细介绍了Android框架中的系统组件Application,包括其作用、如何自定义及使用。Application是用于存储全局状态的基类,通过在AndroidManifest.xml中指定,可以在整个应用生命周期中保持单一实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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对象,然后再得到相应的成员变量即可。它是代表应用程序的类,使用它可以获得当前应用的主题和资源文件中的内容等,这个类更灵活的一个特性就是可以被继承,来添加自己的全局属性。

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值