收藏官网首页
查看: 11369|回复: 1

【android】Application 使用分析

45

主题

92

帖子

507

积分

高级会员

Rank: 4

积分
507
跳转到指定楼层
楼主
发表于 2016-8-5 19:01:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
校园创客福利

一. Application 分析



1. Application 简介



(1) Application 概念


Application 概念 : Application 属于组件范畴;

-- 本质 : Application 与 四大组件 一样也属于 Android 中的组件;

-- 作用 : 用于存储系统 和 用户定义的全局信息;

-- Application 创建 : 应用开始运行时创建 Application 对象, 可以自定义, 也可以让系统自动创建;

-- Application 单例性 : 每个应用只创建一个 Application 对象, 该类属于单例模式;

-- Application 生命周期 : Application 生命周期 从应用启动开始 到 应用退出结束, 与应用的生命周期是相同的;

-- Application 作用 : 在任何组件中调用 getApplication() 或者通过 Context 对象调用 getApplicationContext() 方法获取的 Application 对象都是相同的, 因此可以使用 Application 进行数据共享, 数据缓存操作;



(2) Application 与 全局变量


Application 与 全局变量 :

-- 基本作用 : Application 在 Android 中是为了 保存全局变量 而设计的类;

-- Android 全局变量定义 : 在 Android 中可以不使用 public static 定义全局变量, 定义在 Application 中的普通变量 在Android应用中可以当作全局变量使用;



(3) Application 使用方法


Application 使用方法 :

-- 自定义 Application : 自定义一个 class 类, 继承 android.app.Application 类;

-- 配置 Application : 在 AndroidManifest.xml 中配置 Application;

-- 获取 Application : 在组件类(Activity, Service 等)中直接调用 getApplication() 方法即可, 在普通类中调用 Context 的 getApplicationContext() 方法;



2. Application 生命周期 及 对应方法



(1) onCreate()


onCreate() 方法简介 : 该方法是 Android 程序的入口;

-- 执行时机 : 该方法在应用创建时自动回调;

-- 注意 : 在父类 Application 中, onCreate() 方法方法体是空的, 这里可以不用执行 super.onCreate()方法;


关于程序入口 :

-- Android 程序入口 : Android 程序入口是 Application, 并不是 Activity, 因为有的 应用是没有 Activity 的;

-- Java 和 C 程序入口 : 这两种语言的程序入口是工程中的 main() 函数;



(2) onLowMemory()


onLowMemory() 方法简介 :

-- 调用时机 : 在内存不足时会回调该方法;

-- 重写方法 : 重写时需要执行父类方法 super.onLowMemory(), 同时根据本应用特点, 释放掉一些不必要的数据;


(3) onTerminate()

onTerminate() 方法简介 :

-- 调用时机 : 只有在模拟器中终止程序时才会回调该方法, 在 Android 真机中是不会回调该方法的;

-- 注意 : Application 的 onTerminate() 方法体是空的, 这里不许要执行父类的方法 super.onTerminate();


(4) onConfigurationChanged()


onConfigurationChanged() 方法简介 :

-- 调用时机 : 配置改变时回调这个方法;

(5) Application 代码分析



3. Application 使用场景 1 --> 组件间的数据传递(1) 使用 Application 传递数据

Application 媒介传递数据方式 :

-- Appliction 集合 : 在 Application 中维护一个集合, 创建一个 HashMap 成员变量, 键是字符串, 值是 Object 对象, 这样 这个 HashMap 可以存储任何类型的对象;

-- 共享过程 : Activity A 将数据存储到 HashMap 中, 将 键 通过 Intent 的 Bundle 传递给 Activity B, 之后在 Activity B 中取出对象, 并将 HashMap 中的对象删除;

-- 适用范围 : 如果跳转的两个 Activity 在同一个 应用 中, 可以使用这种方法;



(2) 传统传递数据方式


传统数据传递 : Activity A 跳转到 Activity B;

-- 实体类 Bean 处理 : bean 实体类必须实现 Serializable或者Parcellable接口, 才可以将实体类 bean 对象放入 Intent 的 Bundle 中;

-- 数据传递过程 : 在 Activity A 中将 实现了 Serializable 或者 Parcellable 接口的实体类对象放入 Intent 的 Bundle 中, 跳转到 Activity B;



4. Application 使用场景 2 --> 应用中的数据缓存

Application 缓存数据 :

-- 缓存少量数据 : 从互联网获取的少量数据可以直接存放在 Application 中用于数据缓存的 HashMap 中;

-- 缓存大量数据 : 如果缓存 数据 或者 文件, 可以将文件缓存到本地, 然后在 Application 中缓存一个 文件路径字符串即可;

-- 释放缓存 : 在 onLowMemory() 方法中可以释放这些缓存, 因为这些缓存可有可无, 这里为了性能牺牲访问速度;




3

主题

19

帖子

127

积分

注册会员

Rank: 2

积分
127
QQ
沙发
发表于 2016-8-11 09:33:39 | 只看该作者
谢谢分享,楼主辛苦了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表