(转)Application 类的用处

本文探讨了在Android开发中使用Application类作为上下文来源的方法,并提出了对于静态变量和AlertDialog使用的反思。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

 

01public 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那层,感觉分层的话就该是这样,所以马马虎虎了。

转载于:https://www.cnblogs.com/xingmeng/archive/2012/08/24/2654393.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值