Android清单<application>及name属性的作用与扩展用途问询
Android Kotlin 中 Manifest 里
<application> 节点及 name 属性详解 1. 应用清单文件中 <application> 节点的作用
- 是整个应用的全局配置容器,Android系统靠这个节点识别应用的整体特征
- 统一声明应用包含的所有核心组件:Activity、Service、BroadcastReceiver、ContentProvider这些组件必须在此节点下注册,才能被系统识别和调用
- 配置应用的全局默认属性:比如图标(
icon)、应用名称(label)、全局主题(theme)、是否允许备份(allowBackup)等,这些属性会作为所有组件的默认值,组件可单独覆盖配置 - 定义应用级的全局规则:比如权限要求、硬件兼容配置、支持的语言方向等,为整个应用提供统一的运行环境配置
- 是应用与系统交互的核心入口:系统启动应用时,会优先读取该节点的配置信息,完成应用的初始化准备
2. <application> 节点中 name 属性的意义及 .BaseApplication 的其他用途
name 属性的意义
name 属性用于指定应用的自定义Application子类。如果不指定,系统会默认使用框架自带的android.app.Application类实例。指定后,应用启动时会优先实例化这个自定义子类,而非默认的Application类。
指定 .BaseApplication 的其他核心用途(除优先实例化外)
结合你提供的代码示例,还有以下实用场景:
- 全局资源/状态的统一管理:示例中
BaseApplication通过lazy初始化数据库实例,整个应用的Activity、ViewModel等组件都能通过application上下文获取这个全局唯一的数据库实例,避免重复初始化,保证数据一致性 - 应用级初始化操作入口:可以在
onCreate()方法中完成全局初始化,比如第三方SDK(统计、推送)启动、全局变量赋值、全局异常捕获配置等,这些操作仅在应用启动时执行一次 - 强类型全局上下文访问:默认
application是Application类型,自定义子类后,可直接强转为BaseApplication,省去频繁类型转换的麻烦,还能直接访问子类中定义的属性(比如示例里的database) - 全局生命周期监听:重写
onTerminate()、onLowMemory()、onTrimMemory()等方法,监听应用的全局生命周期事件,及时做资源释放或性能优化
附相关代码示例
Android 清单文件(AndroidManifest.xml)
<application android:name = ".BaseApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Forage"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/Theme.Forage.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
BaseApplication 类代码
class BaseApplication : Application() { val database: ForageDatabase by lazy { ForageDatabase.getdatabase(this) } }
调用 BaseApplication 的示例代码
private val viewModel: ForageableViewModel by activityViewModels { ViewModelFactory( (activity?.application as BaseApplication).database.ForageableDoa() ) }
内容的提问来源于stack exchange,提问作者Theprogrammingnoob
相关产品推荐
相关产品推荐

