第十七单元 Application的生命周期和上下文的应用场景

Application的生命周期和上下文的应用场景 1. Application的生命周期1.1 onCreate时的操作1.2 onTerminate时的操作1.3 onLowMemory时的操作1.4 onTrimMemory时的操作2. Application的应用2.1 BaseApplication的封装3 上下文不同场景的使用3.1上下文为Application的场景3.2上下文为Activity的场景3.3上下文为Service的场景3.4上下文为ContentProvider的场景。 阅读详情

Application的生命周期和上下文的应用场景

Application是什么?

Application和Activity,Service一样,是Android框架的一个系统组件,当Android程序启动时系统会创建一Application 对象,用来存储系统的一些信息。

通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己的Application,也很简单。
创建一个类AppApplication继承Application并在AndroidManifest的application标签中进行注册(只需要给application 标签增加个name属性把自己的Application的名字写入即可)。

Android系统会为每个程序运行时创建一个Application类的对象且仅创建一个
(打开微信安卓系统会为微信创建一个Application对象,再打开微博安卓系统又会为微博创建一个Application对象),
所以Application可以说是单例 (singleton)模式的一个类.
且Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例 的,所以在不同的Activity,Service中获得的Application对象都是同一个对象。
所以可以通过Application来进行一些,数据传递,数据共享,数据缓存等操作

Application的应用
通过Application传递数据

假如有一个Activity A, 跳转到 Activity B ,并需要传递一些数据,通常的作法是Intent.putExtra()让Intent携带,或者有 一个Bundle把信息加入Bundle让Intent推荐Bundle对象,实现传递。但这样作有一个问题在于,Intent和Bundle所能携 带的数据类型都是一些基本的数据类型,如果想实现复杂的数据传递就比较麻烦了,通常需要实现Serializable或者
Parcellable接口。这其实是Android的一种IPC数据传递的方法。如果我们的两个Activity在同一个进程当中为什么还要
这么麻烦呢,只要把需要传递的对象的引用传递过去就可以了。

基本思路是这样的。在Application中创建一个HashMap ,以字符串为索引,Object为value这样我们的HashMap就可 以存储任何类型的对象了。
在Activity A中把需要传递的对象放入这个HashMap,然后通过Intent或者其它途经再把这索引的字符串传递给Activity B ,Activity B 就可以根据这个字符串在HashMap中取出这个对象了。只要再向下转个型 ,就实现对象的传递。

Application数据共享

多个组件之间数据共享。举例:两个Activity之间数据共享
Application 对同一个应用程序是唯一的,所以可以使用Application进行数据共享。

Application数据缓存

我一般会习惯在Application中建立两个HashMap一个用于数据的传递,一个用于缓存一些数据。
比如有一个Activity需要从网站获取一些数据,获取完之后我们就可以把这个数据cache到Application当中,
当页面设置到其它Activity再回来的时候,就可以直接使用缓存好的数据了。但如果需要cache一些大量的数据,
最好是cache一些 (软引用)SoftReference ,并把这些数据cache到本地rom上或者sd卡上。
如果在application中的缓存不存在,从本地缓存查找,如果本地缓存的数据也不存在再从网络上获取。

易导致的错误

使用Application如果保存了一些不该保存的对象很容易导致内存泄漏。
如果在Application的onCreate中执行比较耗时的操作,将直接影响程序的启动时间。
一些清理工作不能依靠onTerminate完成,因为android会尽量让你的程序一直运行,所以很有可能onTerminate()方法 不会被调用。

Application的生命周期

1、onCreate() 程序创建的时候执行

2、onTerminate() 程序终止的时候执行
在模拟环境下执行。当终止应用程序对象时调用,不保证一定被调用,
当程序是被内核终止以便为其他应用程序释放资源,那么将不会提醒,
并且不调用应用程序Application对象的onTerminate方法而直接终止进程。

3、onLowMemory() 低内存的时候执行

好的应用程序一般会在这个方法里面释放一些不必要的资源来应付当后台程序已经终止,
前台应用程序内存还不够时的情况。

4、onConfigurationChanged(Configuration newConfig) 配置改变时触发这个方法。

5、onTrimMemory(int level)程序在进行内存清理时执行

生命周期

public class MyApp extends Application {
    private static final String TAG = "baby";
    @Override
    public void onCreate() {
        super.onCreate();
        Log.i(TAG, "onCreate: ");
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.i(TAG, "onConfigurationChanged: ");
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        Log.i(TAG, "onLowMemory: ");
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        Log.i(TAG, "onTerminate: ");
    }

    @Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
        Log.i(TAG, "onTrimMemory: ");
    }
}
【信息科学与工程学】【数据科学】数据科学领域 第十二篇 大数据主要算法07 任务工序(2) 工序类别工序名称工序描述处理时序输入输出控制点质量指标异常处理数据接入工序​流数据源连接连接到外部流数据源初始阶段流数据源配置流数据连接连接参数配置连接成功率重连机制,失败告警数据拉取从数据源拉取数据持续实时数据源连接原始数据流拉取频率,批大小数据延迟,吞吐量超时重试,流量控制反序列化将二进制数据反序列化数据到达时二进制数据结构化数据记录序列化格式反序列化成功率格式异常处理数据预处理工序​数据验证验证数据完整性和格式反序列化后原始数据记录验证后数据验证规则数据质量合格率丢弃无效数据,异常记录数据清洗清洗脏数 阅读详情

相关推荐

【企业管理】【管理科学】企业全岗位综合运营与组织知识矩阵体系01

岗位类别核心职责工作内容(详细)协作模式协商焦点博弈策略信任建立机制序列化工作流程关键绩效指标研发类​技术创新与产品开发1.需求分析:R=f(U,M,T) 2.概念设计:C=D(S,B) 3.原型开发 4.测试验证 5.文档编写敏捷团队、跨功能协作技术方案、资源分配、优先级纳什均衡:ui​(si​,s−i​)≥ui​(si′​,s−i​)代码审查、技术分享、结果透明瀑布模型/敏捷迭代1.专利数量P 2.技术就绪度TRL 3.缺陷密度D<0.1/KLOC其中:U=用户需求,

weixin_49199313的博客 744

Android(3、Application生命周期:每个应用程序都会有一个继承自Application的类。)

因此,将一些需要全局访问的变量保存在Application的成员变量中,可以在整个应用程序中访问这些变量,而不需要通过传递参数或使用单例模式来实现。需要注意的是,由于Application的实例在整个应用程序的生命周期中存在,因此保存在Application中的数据会一直存在,直到应用程序被终止。指的是将一些需要全局访问的变量保存在Application类中的成员变量中。在应用程序的任何地方,可以通过调用getApplication()方法获取Application的实例,并访问其中的成员变量。

yiyuanpeng2004的博客 1884

上汽CPMP开发流程与A、B、C、D样

也叫验收样件或设计样件,是根据A样试制结果优化后的样件,外观、功能达到设计要求,B样可以是手工样件或者模具件,B样件的全维度产品功能和尺寸参数已经固化下来,并需要和最终的量产产品保持一致。为批量样件或生产样件、展示样件,是在A/B的基础上完善结果,此时的产品状态已经完全定型,并能够满足客户和市场提出的各类需求。预试生产(Pre-Production)----------------------------------------------------------------------→D样。

weixin_43602865的博客 3717

android Application类的详细介绍

android Application类的详细介绍 分类: android Application类的详细介绍 android 方法详解2011-11-19 14:53 4101人阅读 评论(2) 收藏 举报 applicationandroidinitializationperformancecallbackj2se 在代码中经常看到application这个类,一直不知道

pi9nc的专栏 9万+

NLP DAY1: 文本数据读取

txt 文本数据的读写CSV 及 Excel 文本数据的读写更多的 DataFrame 操作数据规模太大怎么办相信通过本次实验的学习,同学们可以游刃有余地面对各种数据文件了。在接下来的实验中,我们将开始真正地开启自然语言处理之旅,开始认识并熟悉一些常见的针对文本本身的预处理操作。

feifeikon的博客 1060

ddr3ip核心_DDR3 IP 核配置

DDR3 控制器 IP 核2.DDR3 IP核配置点击 Flow Navigator 面板下的“Project Manager -->IP Catalog”。 在“Memories & Storage Elements -->Memory Interface Generators”分类展开后,可以看到名为“Memory Interface Generator (MIG 7 ...

weixin_33049919的博客 2935

Android Studio开发中Application和Activity生命周期详解

创建阶段:应用进程启动时创建Application实例配置阶段:应用组件初始化及配置运行阶段:应用处于活动状态终止阶段:应用进程被系统回收Activity生命周期由一系列状态组成,系统通过回调方法与Activity交互。创建状态:Activity正在被创建启动状态:Activity可见但未获取焦点恢复状态:Activity可见且获取焦点(用户可交互)暂停状态:Activity部分可见(如被对话框覆盖)停止状态:Activity完全不可见销毁状态:Activity被销毁。

百锦再的博客 2万+

SVDD和OCSVM的比较

OCSVM(one class support vector machine)即单类支持向量机,最先提出的文献为:Estimating the support of a high-dimensional distribution.该模型 将数据样本通过核函数映射到高维特征空间,使其具有更良好的聚集性,在特征空间中求解一个最优超平面实现目标数据与坐标原点的最大分离,如图1: 坐标原...

qq_33880788的博客 1万+

Android application生命周期

环境:Android 10.0(29) 最近在学习Replugin插件化开发,发现初始化都是在Application中调用的,所以顺便学习一下application的相关知识 1、相关方法 onCreate() :创建时候调用 attachBaseContext(Context base):继承自ContextWrapper,设置最基础的上下文context onTerminate() :应用被彻底关闭会调用,用模拟器测试时候,没发现有回调 onConfigurationChanged(@NonNull C

明天的增加的博客 1656

YOLOv8性能突破:DySample超轻量动态上采样算子的创新应用与实现【附保姆级代码】

YOLOv8(You Only Look Once Version 8)作为YOLO系列模型的最新版本,延续了高效、准确的目标检测优势。其基础结构包含了骨干网络(Backbone)、检测头(Head)、以及特征融合层(Neck)。在特征融合阶段,YOLOv8需要对不同尺度的特征图进行上采样,以便将低分辨率的特征与高分辨率的特征进行融合。传统的上采样操作多使用插值(如双线性插值)或固定卷积,而这些方法可能无法很好地适应复杂的上下文信息。

一键难忘的博客 3120

手把手教你学simulink(42.1)--储能系统场景示例:基于Simulink的电池+超级电容器混合储能系统

混合储能系统(HESS)结合了电池和超级电容器的优点,能够在满足高功率需求的同时提供较长的持续放电时间。这种组合特别适合用于电动汽车、可再生能源发电系统、电网频率调节等应用场景。本项目将详细介绍如何在MATLAB/Simulink中搭建一个完整的基于电池和超级电容器的混合储能系统,并提供具体的代码实现和设计步骤。如果你需要实现更复杂的控制逻辑,可以使用MATLAB Function模块。以下是一个简单的例子,展示了如何在该模块中实现一个条件逻辑,以分配电池和超级电容器的充放电任务。Matlab。

MHD0815的博客 543

Android 二 第十七单元

Application的生命周期和上下文的应用场景 Application是什么? Application和Activity,Service一样,是Android框架的一个系统组件,当Android程序启动时系统会创建一Application 对象,用来存储系统的一些信息。 通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己的Application,也很简...

haohao_9的博客 171

Transformer实战(5)——Hugging Face环境配置与应用详解

本文详细介绍 Transformer 模型的实践应用全流程。首先讲解基于 Anaconda 的环境配置,包括 transformers 库安装及 hf-mirror 镜像加速方案。然后以 BERT 为例,演示分词器使用、文本编码及 fill-mask 等任务实现,对比 PyTorch/TensorFlow 框架差异。接着展示 Hugging Face 社区模型应用,包括 GPT-2 文本生成和零样本分类。最后扩展至多模态领域,使用 CLIP 模型实现零样本图像分类。

盼小辉丶的博客 1万+

Android Application的使用及其生命周期

摘要: 1. Application的使用 2. Application的生命周期 ---------------------------------------------------- 工程代码:LearnContext.zip ---------------------------------------------------- 1. Application的使用 ...

weixin_30781631的博客 228

Python 爬虫实战:赛事分析平台构建与比赛数据抓取

在体育赛事日益丰富的今天,对比赛数据的收集与分析对于运动员、教练团队以及体育爱好者都具有重要意义。通过构建一个赛事分析平台,我们可以系统地抓取、整理和展示各类比赛数据,为用户提供全面的赛事洞察。本文将深入讲解如何利用 Python 爬虫技术实现这一平台的构建,涵盖从目标网站分析到数据可视化展示的全过程。

u014481728的博客 3180

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android application生命周期介绍

看到application这个类,1直不知道这个是干甚么用的,今天恰好有点时间,所以进行了详细的学习。 1.先对它的整体概念解释: 在android源码中对他的描写是;         * Base class for those who need to maintain global application state. You can         * provide

lyglostangel的专栏 1368

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android 全局Application上下文

随时获取全局对象Application的方式主要有两种: 自定义Application 创建自己的Application继承自Application class BaseApplication : Application() { companion object{ lateinit var application: BaseApplication } override fun onCreate() { super.onCreate() a

qq_37658380的博客 727

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Application和Activity上下文Context精炼详解

一、前期基础知识储备 Context相信大家在日常开发中打交道的次数决不在少,很多场景下都需要运用到Context,不管是Framework提供给我们的四大组件,还是应用级别的Application,还是负责表现层的View相关类,甚至连我们很多时候创建的实体类都会需要持有一个Context的引用。那么Context到底是什么呢?本篇文章一起来看一下。 (1)Context是什么? Co...

Chin_Style的博客 6409

Application类可以用于管理全局的应用程序状态和数据,例如共享数据对象、全局配置

onCreate()</这是关于Android中的类的简要总结。您可以根据这些知识点创建自己的Markdown课件并进一步扩展内容以满足您的需求。如果您需要更多详细的信息或示例代码,请随时提出具体问题。

技术应让更广泛的人群流入到实际产品开发中才是正统 601

【详细】Application生命周期简介

一、什么是Application? Android系统会为每个程序运行时创建一个Application类的对象且仅创建一个 (例如:打开微信安卓系统会为微信创建一个Application对象,再打开微博安卓系统又会为微博创建一个Application对象),所以Application可以说是单例 (singleton)模式的一个类。 Application对象的生命周期是整个程序中最长的,它...

m0_37218227的博客 6286

Android生命周期之一:App入口与Application生命周期

一、App入口   Android程序启动后的第一个入口点是Application的onCreate(): public class MyApplication extends Application { @Override public void onCreate() { Log.d(TAG, &amp;quot;这里是Android程序入口&amp;quot;); super....

悟空编程--用Demo学Android 1万+

Android:全面解析 Application类

代表应用程序(即)的类,也属于Android中的一个系统组件继承关系:继承自类[外链图片转存中…(img-NpsPK8j3-1734635940318)]示意图那么,该类有什么作用呢?下面,我将介绍类的方法使用[外链图片转存中…(img-kcetg57f-1734635940318)]示意图。

2401_89308178的博客 1907

Android Application的生命周期

//一个普通的Application public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //当Application启动时,第一个调用 } @Override publ...

我点灯的博客 1233

【Android】之【Aplication】

Android Application相关技术知识点整理。

Crazy程序猿 3041

Application 作用以及生命周期

前言

一杯茶,一包烟,一个bug改一天 1456

基础复习——应用Application——Application的生命周期——利用Application操作全局变量——重点...

Application的生命周期 Application是Android的一大组件,在App运行过程中有且仅有一个Application对象贯穿整个生命周期。 在AndroidManifest.xml里面,activity节点的上级正是application节点。如果给application节点指定android:name属性,则表示App将运行自定义名称的Application代码。 需要注意...

小白龙白龙马的博客 810
上一篇: 第十六单元 Service进程间通信
下一篇: 第十八单元 使用MediaPlayer完成音乐播放器(内容提供者获得本地所有音频)
安久儿
博客等级 码龄8年 2粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值