Android组件-Android Application

Android组件化之Module Application的组件化实现方案 ## 背景 ### 组件化已经流行多年了,大部分团队的组件化,还是部分的组件化,比如Activity,Fragment,Res,Androidmanifaset资源的module化隔离,但是,针对有些初始化必须在Application里做的,基本上,还是需要写在App模块下的application里,就会导致App模块下的appcation里臃肿,且,增加了非必要性的引用,这里呢,提供了一套完全彻底化组件化方案,组件Module也可以有自己的Application,一个应用在启动的使用,只有一个Appli 阅读详情

关于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.

这里唯一提到Application的作用就是用来保存应用程序全局状态/变量。但是在介绍之后,官方文档还跟了一段TIP:

There is normally no need to subclass Application. In most situation, static singletons can provide the same functionality in a more modular way.
If your singleton needs a global context (for example to register broadcast receivers), the function to retrieve it can be given a Context which internally uses Context.getApplicationContext() when first constructing the singleton.

这里说的是通常情况下,我们不需要继承Application来实现全局状态的保存,更普遍的做法是通过静态单例来实现。

看起来有些纠结,不过结合实际开发经验,用静态变量而不是Application至少有一个明显的好处,写法简单。通过系统API:Context.getApplicationContext()返回的结果是Application的父类-Context,我们需要强制类型转换为自定义的XXXApplication,这种写法一来麻烦,二来重构时候更麻烦。


那除了官方文档提到的控制全局状态,Application还有更高大上的用武之处吗?

显然是有的,Application既然和我们app是一样的生命周期,那启动一个app的同时这个app的Application也就实例化了,因此Application还是app的入口。

做为入口,自然有一些义务和责任:

1. 初始化全局控制器,如初始化UncaughtExceptionHandler异常处理器,统计SDK,创建app根目录文件夹等

2. 为不同进程的数据处理不同的初始逻辑,如两个进程分别注册不同的广播监听等


综上,在app开发的过程中,我们应当将更多的注意力放在application的入口作用上,至于通过Context.getApplicationContext()来保存全局变量,确实有更多更好的方法来代替。


下面是4个主要api的介绍:

1. oncreate,通常情况下一个app只有一个进程,因此该方法只有在app启动时调用一次,而且只调用一次,但是要特别注意在多进程的情况下,每个进程启动时都会调用一次application的oncreate方法。

2. onConfigurationChanged,应用在配置变化的时候回调。

3. onLowMemory,系统内存严重不足时将回调该方法,注意是整个系统内存都不够才回调,而不是app自身内存不足。

4. onTerminate,退出app的时候回调,但是官方有明确说明,未必每次都会调用,因此尽量不要依赖该方法处理一下必要业务。


最后简要说明下如何自定义一个application,这很容易百度到,因此简单带过:

1. 在AndroidManifest.xml的<application>标签加上一个属性android:name="xxxapp.xxxpackage.xxxApplication"

2. 创建一个继承android.app.Application的类xxxapp.xxxpackage.xxxApplication即可


Android开发之Application组件 Android开发学习笔记。学习Application的使用,包括:生命周期、利用Application读写App全局变量、方法数量过多的问题、借助App实例操作Room数据库框架。 阅读详情

相关推荐

CentOS7下用FreeRADIUS+AD实现802.1X认证完整指南(附华为交换机配置)

本文提供了在CentOS 7系统上部署FreeRADIUS并与Windows Active Directory集成,以实现企业级802.1X网络认证的完整实战指南。内容涵盖从架构原理、服务器配置(包括Kerberos、Samba Winbind集成)、FreeRADIUS核心设置与AD联动,到华为交换机的详细配置步骤。重点解决了生产环境中常见的高可用、动态VLAN下发及深度排错问题,为企业构建集中、安全的网络准入控制体系提供了经过验证的解决方案。

weixin_29273849的博客 406

安卓核心五application组件

安卓核心五application组件 简介:application组件,在注册方式上来说,这也是一个核心组件,因为这个组件在使用的时候同样要注册,但是这个组件代表了整个应用,根据这个特征可以用于存储一些全局变量,这样变量的生命周期会延长到整个应用。 - 使用方式:使用方式和service类似,编写类继承application,然后在AndroidManifest.xml文件中声明,生命方式也很简单,

lucky_eyefocus的博客 453

R语言分段回归

1.利用虚拟变量进行线性回归 (MEdata.csv的数据来源:https://github.com/ChenQihome9/优快云-Data-Library/blob/master/MEdata.csv) 问题13:针对TAX~GDP,使用分段回归方法,找到其回归方程。编程,并根据程序结果叙述如下几方面问题:(1)分几段最佳?(不超过5段内)(2)分段位置定在哪儿最佳?(3)写出最佳方...

ChenQihome9的博客 1万+

Android组件化之Application

上一篇文章笼统的总结了一下组件化开发的一些基础性问题,本篇文章继续组件化的学习,主要分如下三个方面介绍组件化中的 Application 如下: Application的作用 合并Application 动态配置Application Application的作用 Androuid 应用的启动的时候最先启动的就是 Application,每个 App 运行时仅创建唯一一个 Applicatio...

躬行之 2481

python文件转为可执行文件(.exe)的详细步骤

本文详细介绍了如何从零开始把python文件打包成为可执行文件(.exe)。

m0_67093160的博客 3万+

使用petalinux做嵌入式设计开发(1)

1.创建vivado工程,建立硬件环境,最终导出hdf文件 既可以在windows系统下的vivado上编写硬件工程并导出hdf文件,也可以在linux系统下的vivado中编写硬件工程并导出hdf文件。(对于windows系统下导出的hdf文件还需要传递到linux系统下的文件夹中。) 2.以hdf硬件文件为基础创建,配置,编译,打包petalinux工程,导出linux系统所需镜像文件。 具体步骤: (0)设置环境变量 设置环境变量使得我们可以直接使用petalin...

plotup的博客 2076

Android中Application组件的基础用法。

关于Application的一些用法的总结: 一、Application大家应该是不太陌生的。他有许多的自有特性可以帮助我们处理很多棘手的问题。本文也将从Application的特性着手,总结如何利用好Application。如果读者已经是对application相当了解,请绕行。    Application是安卓系统组件之一,不在公认的四大核心组件之中,但是和activity、servic

qq_36793165的博客 3633

最优化学习笔记1——关于拟牛顿法推导

从2020年3月份到现在,一年的时间里断断续续自学最优化,结合豆瓣读书、知乎等网站上的推荐,翻阅了以下书和课程: Stephen Boyd和Lieven Vandenberghe的《Convex Optimization》,这本书被公认为学习凸优化的必读经典著作,其中大量的篇幅讲应用,讲理论和算法的篇幅稍少一些。在B网站上有Boyd的视频课程,油管上也有,不过只有英文字幕,如果是零基础接触,直接看Boyd的视频稍显费劲,B站上也有凌青老师以《Convex Optimization》为教材的讲解,推荐作为入

xiaofei473的博客 1768

android 组件化开发——多个Module的Application初始化共存问题

参考Android多module初始化application Android-组件化如何处理多个ModuleApplication共存问题? 一个重点: 在Application里,attachBaseContext()方法的执行顺序是在onCreate()之前的 组件化的目的是为了业务解耦,每个业务模块需要不同的功能,例如车辆详情模块需要第三方分享,城市定位模块需要百度地位等。有些特殊功能的初始化需要在 Application 中去做,但是这些功能并非全部业务组件都用到的东西,放到 主工程Applic

skyang在路上 7575

【CicadaPlayer】av_rescale_q 学习:转换PTS和Duration

参考 av_rescale_q()理解 大神时间基准的总结: AVPacket下的pts和dts以AVStream->time_base为单位(数值比较大),时间间隔就是AVStream->time_base。 大神:多种转换的总结 av_rescale_q用于计算Packet的PTS 如: if (pkt->pts != AV_NOPTS_VALUE) { pkt->pts = av_rescale_q(pkt->pts, m

突围 842

基于 ESP32 的智能药盒提醒装置设计与实现

本装置基于 ESP32 实现了智能药盒的核心功能,硬件选型兼顾成本与实用性,软件设计模块化、易拓展。后续可通过 ESP32 的 WiFi 模块接入物联网平台(如阿里云、OneNet),实现远程设置提醒、服药状态反馈等功能,进一步提升智能化水平。该装置能有效解决老人忘服药问题,具有较高的实用价值与推广潜力。

weixin_42300449的博客 1045

Android初级—中级进阶必须搞懂之四大组件以及Application和Context的全面理解

1.LoadedApk:所有组件在初始化的时候,如果LA没被初始化都会初始化一遍2.Context:1.只有Activity的CI有上一个Activity的Token2.Receiver的Context是继承于ContextWr App er 的 ReceiverRestrictedContext,不可绑定Service。

2501_90222587的博客 806

解决Jupyter Notebook中Plotly图表显示问题

摘要:在Jupyter Notebook中使用Plotly绘图时遇到图表无法显示的问题。通过分析发现Python 3.12版本与Jupyter存在兼容性问题。解决方案是将Python降级到3.11版本,重新创建虚拟环境后图表正常显示。这表明版本兼容性对数据可视化工具至关重要,环境配置检查是解决问题的关键步骤。该案例为遇到类似问题的开发者提供了参考方案。

m0_74337424的博客 125

Android Application 组件化

以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表、这个系列的有关架构的概念,适合有大概三年以上Android经验的同学理解。如果你大概一年半以上经验,入门进阶了,我近段时间会开展分析MVP的相关架构章节。到时有兴趣的同学,可以查看一番。在我创建的QQ群中,收到很多热心好学的同学询问一些问题,然后我们...

weixin_34357267的博客 192

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android Context在四大组件及Application中的表现

Context可以理解为“上下文”或”环境“,它提供了访问系统服务及系统资源的功能,Context 参与加载资源、启动Activity、启动Service、获取系统服务/应用资源、创建View、数据库等操作。 Context源码 Activity流程分析 Service流程分析 BroadcastReceiver流程分析 ContentProvider流程分析 Application流程分析

xiangxiongfly 1374

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android登录注册 组件,Android组件化之组件/模块初始化注册到application;组件生命周期注册...

一个用于帮助 Android App 进行组件化改造插件工具 —— 使业务组件,功能组件library 可以感知到主工程Application的创建与退出;在Android组件化开发中,必会经历的问题之一:组件/模块初始化问题。组件化为了解耦,每个组件/模块有不同的功能,例如不同组件/模块要在application中初始化一些第三方SDK或本组件/模块需要在application初始化时做一些操...

weixin_42135753的博客 470

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android studio创建一个类继承application_Android进阶知识树——必须会的组件化技术...

作者:Alex@W 来源:https://juejin.im/post/5d7a0d0651882508020476311、概述笔者从事智能家具行业的开发工作,也是从公司创业团队工作到现在,对于公司的项目从1.0版本开始接手一直到现在,虽说项目不是很大但麻雀虽小五脏俱全,在项目和团队的不断扩大、暴露出的问题也不段增多,组件化势在必行,本文就根据整个项目的发展,总结下组件化的实践流程;1...

weixin_35633340的博客 1142

安卓基础之《(14)—数据存储(4)应用组件Application》

2、Application是Android的一大组件,在App运行过程中有且仅有一个Application对象贯穿整个生命周期。可以使用Application这个组件。一、Application的生命周期。资源不需要持久化,放到内存里就可以了。希望多个组件都可以访问这个数据。希望它是个可以操作的全局变量。1、如果有这样的需求。

csj50的专栏 248

android 组件化开发 application,组件化的玩Android App

前言依照 玩Android 惯例,感谢鸿洋大神提供的 玩Android API我是一个小小小小小菜鸟,这个项目是我用来学习Android开发的最近听说组件化开发很流行,我感觉很神秘,于是在读过很少的一些资料之后开始按照自己的理解来做组件化的实现这个项目用“模块化”来表述更贴切对于组件化这个话题来说,我希望能用最简单的语言和实现来描述清楚我的理解希望路过的大神不吝赐教如果你也在学习组件化,不妨一起来...

weixin_42293387的博客 447

Android 组件化 (二)之重要的Application和Androidmanifest.xml

接着Android 组件化(一) 回答一下大婶的问题

图你怀中安稳的博客 1283

Android四大组件系列 Application创建流程

system_server 进程和 app 进程都运行着一个或多个 app,每个 app 都会有一个对应的 Application 对象(该对象跟 LoadedApk 一一对应)。system_server 进程app 进程system_server 进程其 application 创建过程都创建对象有 ActivityThread,Instrumentation,ContextImpl,LoadedApk,Application。app 进程。

weixin_43700867的博客 1254

Android系统中的Application和四大组件一些方法的启动顺序和一些坑

一 背景     在做一个项目时,我们想在应用最早启动时,先做一些判断,然后根据判断的结果再决定要不要对其他应用提供服务。     对其他应用提供服务指的是,我们的应用中有ContentProvider,第三方应用通过call方法调用到我们提供的ContentProvider,ContentProvider执行逻辑后并给调用的返回结果。当第三方应用调用我们的应用时,我们的应用存在启动和未启动的

long117long的专栏 9107

安卓Application组件:全局数据存储与生命周期管理

在安卓开发中,Application组件作为应用的全局上下文,承担着关键的数据存储和生命周期管理职责。从技术原理看,Application实例在应用启动时首先创建,贯穿整个应用生命周期,这使其成为实现全局变量和共享资源的理想载体。通过合理使用SharedPreferences和Room数据库等持久化存储方案,开发者可以在Application中构建高效的数据访问层。这种设计模式特别适合处理用户认证状态、应用配置等需要跨组件共享的数据场景。结合依赖注入框架如Dagger或Hilt,能进一步提升代码的可维护性和

weixin_34332905的博客 497

Android应用组件Application

应用组件Application

fenghuochengshan的博客 237

Android组件化 -> 基础组件进行Application,Activity生命周期分发

Android组件化 -> 基础组件进行Application,Activity生命周期分发

sunshine_guo的博客 340

android 14应用启动分析 - (中)应用Application和Activity组件创建与初始化

应用Application和Activity组件创建与初始化

小字的博客 1899
下一篇: Android组件-Activity生命周期与回调机制
shiftjava
博客等级 码龄19年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值