Android清单文件详解(三)----应用程序的根节点<application>

本文详细介绍了AndroidManifest.xml中<application>节点的配置,包括其属性和作用。同时,讲解了如何实现自定义Application类,以及Application类提供的onCreate(), onConfigurationChanged(), onLowMemory()等关键方法的用法,强调了在应用程序初始化、系统配置变更和低内存情况下的处理策略。" 117324413,7366784,Typora自定义代码块样式与标题序号,"['Markdown编辑器', 'Typora配置', '前端开发', 'CSS样式']
摘要由CSDN通过智能技术生成

<application>节点是AndroidManifest.xml文件中必须持有的一个节点,它包含在<manifest>节点下。通过<application>节点的相关属性,我们可以声明Android应用程序的相关特性。这个节点包含所有应用程序组件的节点,包括Activity,服务,广播接收器和内容提供者,并且包含了一些可能影响所有组件的属性。这些属性中的其中一些又会作为默认值而被设置到应用程序组件的相同属性上,比如icon,label,permission,process,taskAffinity和allowTaskReparenting等,而其他的一些值则作为应用程序的整体被设置,并且不能被应用程序组件的属性覆盖,比如debuggable,enabled,description和allowClearUserData等。



1.<application>节点配置



一般来说,在生成Android应用程序的时候,默认的AndroidManifest.xml文件中就已经包含了一些默认的<application>节点,其中包含应用程序的基本属性。现在我们就来看看<application>节点信息的全集,代码如下:



<application android:allowTaskReparenting=["true"|"false"]

android:backupAgent="string"

android:debuggable=["true"|"false"];

android:description="string resource"

android:enabled=["true"|"false"]

android:hasCode=["true"|"false"]

android:hardwareAccelerated=["true"|"false"]

android:icon="drawable reource"

android:killAfterRestore=["true"|"false"]

android:label="string resource"

android:logo="drawable resource"

android:manageSpaceActivity="string"

android:name="string"

android:permission="string"

android:persistent=["true"|"false"]

android:process="string"

android:restoreAnyVersion=["true"|"false"]

android:taskAffinity="string"

android:theme="resource or theme">

</application>



2.如何实现Application类



首先要介绍的是android:name属性,它指的是Application类的子类,当应用程序进程被启动的时候,由android:name属性指定的类将会在所有应用程序组件(activity,服务,广播接收器,内容提供者)被实例化之前实例化。


一般情况下,应用程序无需指定这个属性,Android会实例化Android框架下的applicaiton类。

然而,在一些特殊的情况下,比如希望在应用程序组件启动之前就完成一个初始化工作,或者在系统低内存的时候做一些特别的处理,就要考虑实现自己的Application类的一个子类。


在Android系统提供的系统应用中,就有一个实现了自己的Application实例,这个应用程序就是Launcher。我们可以仿照它来实现一个自己的Application类,具体步骤如下。


创建一个叫做ApplicationTest的项目,并且在默认生成的MainActivity里的onCreate()方法中添加一行代码来输出一条日志。这样就可以看到Application创建时间,具体代码如下:


public class MainActivity extends Activity {
    private static final String TAG="MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.e(TAG,"MainActivity is created");
    }
}



实现自己的MyApplication类,代码如下:


public class MyApplication extends Application {
    private static final String TAG="MyApplication";
    @Override
    public void onCreate() {
        super.onCreate();
        Log.e(TAG,"MyApplication is created");
    }
}


将MyApplication添加到清单文件AndroidManifest.xml中<application>内android:name中


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李元静

您的鼓励就是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值