博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)Application 类的用处
阅读量:6125 次
发布时间:2019-06-21

本文共 1191 字,大约阅读时间需要 3 分钟。

Android 有个 Application 的类,弄个子类继承它,就可以往里面放东西。最早我见到各种地方是拿它来取 context 的,后来我有一阵子把各种变量也放里面,但是后来发现就算是Application也还是会遇到被系统回收,所有变量清空重新初始化的情况,于是感觉这样 用不太妥当。

后来想来想去,这东西也就是个取 context 的功用而已,我感觉连单例模式都不要用都行。

context其实就2类,1类是activity的context,就是给new alertdialog.builder用的,1类是context,随便都可以,View.inflate都是随便context都ok的。

 

01 public class MyApplication extends Application{
02  
03     private static Context context;
04  
05     public void onCreate(){
06         super.onCreate();
07         MyApplication.context = getApplicationContext();
08     }
09  
10     public static Context getAppContext() {
11         return MyApplication.context;
12     }
13 }

 

给sqlite那部分类做参数用,其实我依然感觉这种做法很怪异,不舒服。如果有用 RoboGuice 的话,无论是 Activity 还是 Context ,是随便 @Inject 的,这种类似在Application子类弄个static变量,每次Activity onresume都设置一次该变量,之后取变量获取当前stack最上面的Activity,我最反感static变量然后到处set get了,反感副作用。

说到alertdialog需要用activity做参数就好2b,照例说你都用到activity了,那总该被该activity托管了吧,可是 直接new alertdialog.builder(activity).show()出来的对话框,切换个屏幕位置直接死了料,必须得用showdialog,然 后override oncreatedialog来return xxx.create()才可以被正确托管,无论切换屏幕重新oncreate activity,这个dialog还会在的,还有如果你用return xxx.show(),这时切换屏幕oncreate activity后,这个dialog会出现2次,omg……

有时候感觉new alertdialog.builder本来不是普通java class应该做的事情,应该放到activity那层,感觉分层的话就该是这样,所以马马虎虎了。

转载地址:http://hzbua.baihongyu.com/

你可能感兴趣的文章
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>