news 2026/6/19 22:30:37

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
安卓基础之《(14)—数据存储(4)应用组件Application》

一、Application的生命周期

1、如果有这样的需求
资源不需要持久化,放到内存里就可以了
希望多个组件都可以访问这个数据
希望它是个可以操作的全局变量

可以使用Application这个组件

2、Application是Android的一大组件,在App运行过程中有且仅有一个Application对象贯穿整个生命周期

3、Application组件方法说明
(1)onCreate:在App启动时调用,可以在这里做准备工作
(2)onTerminate:(只在模拟环境上有效)在App终止时调用,可以在这里做善后的工作
这个接口是给Android系统开发工程师用的,不是Android应用开发工程师用
(3)onConfigurationChanged:在配置改变的时候调用,例如从竖屏变为横屏
屏幕旋转,Activity会重新创建,此时页面上表单填的内容都会消失。可以用ViewModel来解决

4、例子
MyApplication.java

package com.example.chapter06; import android.app.Application; import android.content.res.Configuration; import android.util.Log; import androidx.annotation.NonNull; public class MyApplication extends Application { // 在App启动时调用 @Override public void onCreate() { super.onCreate(); Log.d("sam", "MyApplication onCreate"); } // 在App终止时调用 @Override public void onTerminate() { super.onTerminate(); Log.d("sam", "MyApplication onTerminate"); } // 在配置改变的时候调用,例如从竖屏变为横屏 @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.d("sam", "MyApplication onConfigurationChanged"); } }

MainActivity.java

package com.example.chapter06; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d("sam", "MainActivity onCreate"); } }

AndroidManifest.xml清单文件application标签下添加android:name=".MyApplication"

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:name=".MyApplication" 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.MyApplication"> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

5、日志

竖屏变成横屏

二、利用Application操作全局变量

1、Application的数据可以让Activity共享

2、Application在整个应用中只有一个实例,所以在我们自定义的时候,需要使用单例模式来写构造方法
改造MyApplication.java

package com.example.chapter06; import android.app.Application; import android.content.res.Configuration; import android.util.Log; import androidx.annotation.NonNull; import java.util.HashMap; public class MyApplication extends Application { private static MyApplication mApp; // 声明一个公共的信息映射对象,可当做全局变量使用 public HashMap<String, String> infoMap = new HashMap<>(); public static MyApplication getInstance() { return mApp; } // 在App启动时调用 @Override public void onCreate() { super.onCreate(); mApp = this; // 在onCreate初始化实例 Log.d("sam", "MyApplication onCreate"); } // 在App终止时调用 @Override public void onTerminate() { super.onTerminate(); Log.d("sam", "MyApplication onTerminate"); } // 在配置改变的时候调用,例如从竖屏变为横屏 @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.d("sam", "MyApplication onConfigurationChanged"); } }

使用:

MyApplication mApp = MyApplication.getInstance(); mApp.infoMap.put("name", name); mApp.infoMap.put("age", age);

3、适合在Application中保存的全局变量主要有下面3类数据
(1)会频繁读取的信息,如用户名、手机号等
(2)不方便由Intent传递的数据,例如:位图对象、非字符串类型的集合对象等
(3)容易因频繁分配内存而导致内存泄漏的对象,如Handler对象等

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 14:42:08

把设备参数翻译成老板听得懂的“利润语言”

制造业销售常常会犯一个错误&#xff1a;对工厂老板大谈“主轴转速12000rpm”“定位精度0.003mm”“支持五轴联动”……老板表面上点点头&#xff0c;心里却在想&#xff1a;“这跟我赚不赚钱有什么关系?”技术参数是工程师的语言&#xff0c;而利润才是老板的母语&#xff0c…

作者头像 李华
网站建设 2026/6/15 14:43:28

新手入门 CTF 想稳拿分?吃透这几招,轻松起步

CTF新手想入门拿分&#xff1f;吃透这几点 一、先搞懂&#xff1a;CTF 到底是啥&#xff1f;网安人为啥必须练&#xff1f; 很多新手问我&#xff0c;CTF不就是个比赛吗&#xff1f;没必要非得学&#xff1f;这话可就错了&#xff01;CTF全称 Capture The Flag&#xff0c;就是…

作者头像 李华
网站建设 2026/6/14 6:11:57

2026 网络安全行业深度解读:行业前景、入门路线与系统学习手册

一、行业发展现状&#xff1a;风口上的黄金赛道 2025 年的网络安全行业已从 “被动防御” 迈入 “主动对抗” 的全新阶段&#xff0c;三大核心驱动力让行业持续保持高速增长。 政策层面&#xff0c;《网络安全法》《数据安全法》的刚性约束下&#xff0c;从政务、金融到医疗、…

作者头像 李华
网站建设 2026/6/10 17:09:31

亲测好用10个一键生成论文工具,本科生轻松搞定毕业论文!

亲测好用10个一键生成论文工具&#xff0c;本科生轻松搞定毕业论文&#xff01; AI 工具如何改变论文写作的未来 在当今学术写作中&#xff0c;越来越多的本科生开始借助 AI 工具来提升效率。尤其是在论文写作过程中&#xff0c;AI 不仅能够帮助学生快速生成初稿&#xff0c;还…

作者头像 李华
网站建设 2026/6/10 7:52:47

Protein Kinase A Inhibitor (6-22), amide;TYADFIASGRTGRRNAI-NH2

一、基础性质英文名称&#xff1a;Protein Kinase A Inhibitor (6-22), amide&#xff1b;PKI (6-22) amide&#xff1b;TYADFIASGRTGRRNAI-NH₂ peptide中文名称&#xff1a;蛋白激酶 A 抑制剂&#xff08;6-22&#xff09;酰胺化片段&#xff1b;PKI 来源 17 肽激酶抑制域多肽…

作者头像 李华