Android开发慎用Static变量

Android开发慎用Static变量
static变量在类加载时被初始化,存储在JVM的方法区中,整个内存中只有一个static变量的拷贝,可以使用类名直接访问,也可以通过类的实例化对象访问,一般不推荐通过实例化对象访问,通俗的讲static变量属于类,不属于对象,任何实例化的对象访问的都是同一个static变量,任何地放都可以通过类名来访问static变量。

基于以上的特性,在Android中通过static变量或者static函数来作为数据传输或作为更新UI的接口,使用起来很便捷,但是存在很大隐患。首先static变量会在类卸载的时候销毁,类卸载最常见的场景是进程销毁,在Android中进程销毁场景更常见。特别是在Activity、Service等组件中定义的static更容易被回收,出现空指针异常。一般将使用的static变量定义在Application中,由于Application生命周期最长,所以static变量相对更安全,但也有不可靠的情况,所以在Android中要谨慎使用静态变量,特别是在Activity和Service等组件中。 一般是能用静态变量的尽量用单例代替,使用static的场景一般是定义常量( final static int a=1),和定义单例(private static SigleTon instance)的时候。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,028评论 25 709
  • 面试必背 会舍弃、总结概括——根据我这些年面试和看面试题搜集过来的知识点汇总而来 建议根据我的写的面试应对思路中的...
    luoyangzk阅读 11,758评论 6 173
  • 我想睡觉了,但500字还没完成。又一次这样赶,怎么办?我本来早上是写好一篇的,但觉得写的不怎么样所以保存私密文章了...
    ab7d12e1cf84阅读 2,312评论 1 0
  • 1.感恩父母赐予我生命! 2.感恩我的家婆为我们付出了那么多! 3.感恩世界万物! 4.感恩所有帮助过我的人! 5...
    彭焱娟阅读 877评论 0 0
  • “你工作找的怎么样了?”,羊的小舅看似不经意但又语重心长一句问话。他手里捧着碗吃晚饭,对着客厅沙发上在看电视的羊说...
    LonelyGod_383c阅读 1,930评论 0 0