Android之Application引用方式
来源:互联网 发布:手机域名注册局 编辑:程序博客网 时间:2024/06/05 18:25
Android开发时,Application一般都放在APP中,Lib模块如果想引用Application则需要在APP中进行传递,然后在Lib模块中用静态变量进行保存。然而这种方法不应该是Android推荐的,从Android Studio提示【Do not place Android context classes in static fields; this is a memory leak】可以看出。静态变量在开发中不是万能,特别是一切场景下静态变量可能被回收导致程序崩溃,所以有许多人努力将这些数据做序列化/反序列化操作,目的很简单,就是让静态变量不会为空。
我们换一种思路想下这个问题,其实我们的Lib模块只是想得到Application,不一定非要自己来保存,只要能引用到就行,那么这样问题就变得简单许多了。
下面介绍两种方法实现上述功能:
1、基础库+Application基类
从上图可以看出,我们的APP模块架构引入了一个【基础库】,这个基础库做了许多事情,其中一个就是Application的基类,所有的模块都会provided基础库,那么所有模块都可以引用基础库中的Application基类了。App的Application继承基础库中的Application即可,这么简单就能实现Appliction的全局引用。
2、采用反射获取Application
代码很简单,通过反射获取ActivityThread类中的Application变量,够机智的。
调用方法:OkApplication.get()
以上两种方法,在条件允许的情况下推荐采用第一种,第二种反射在Android不同版本上可能会有差异。
- Android之Application引用方式
- Android引用方式
- Android之Application
- android之application类
- Android之Application
- android之Application
- Android之Application
- Android之Application
- Android之Application简介
- android学习之application
- Android项目之Application
- Android 之 Application
- android中资源引用方式
- Android activity之间数据传递和共享的方式之Application
- Android activity之间数据传递和共享的方式之Application
- WPF入门之Application启动方式
- Android应用框架之 Application
- android Application学习之二
- 随笔
- java顺时针、逆时针打印矩阵
- 五位数的回文素数
- asp.net用户注册的与密码强度及验证的相关问题。对上一次详细叙述。
- Linux下PHP安装扩展
- Android之Application引用方式
- Canvas画太极图
- 【超牛】利用Excel制作身份证查询系统!
- Java中的static关键字解析
- Unity3D save ScreenShots by 3 methods
- 项目启动找不到资源文件可能的解决办法
- java后端程序员1年工作经验总结
- Linux
- recipe for target 'doc/cpp.info' failed