静态变量是在类被load的时候分配内存的,并且存在于方法区。 当类被卸载的时候,静态变量被销毁。 在PC机的客户端程序中,一个类被加载和卸载,可简单的等同于jvm进程的启动和结束。
如果资源足够,Android不会杀掉任何进程,另一个意思就是进程随时可能会被杀掉。
一般是能用静态变量的尽量用单例代替,使用static的场景一般是
1、定义常量( final static int a=1)
2、定义单例的时候。
Android 编程中,使用静态变量有哪些缺点?应该如何规范使用? - 知乎
在Android中不应该使用static变量,static本身依赖进程模型,而Android力图屏蔽进程的细节。
毫无疑问,Application类是你需要的选择,那是堆积一些进程级别全局信息的最佳场所。
由于 Android 具有相应的生命周期的特征,因此Android 程序不应该使用任何 static 变量,不应该并不是说不能,而是说使用static 变量很可能会导致bug。
有多种方式可以代替static 变量,比如继承 Application 类,使用 preference ,使用 db,以及保存数据到静态文件 等等
关于Android 使用静态变量,我遇到过的情况是:当应用不处于与当前用户交互的情况时(例如回到HOME,跳到其他应用),离开的时间比较长时,应用的静态变量有可能被置null, 是不保险的。
static只能在进程内起作用,跨进程是没用的。
"service和activity通信,直接用static变量传递信息,这样看似不是很规范" 在同一个App内可以使用static变量共享这种方式,google更推荐使用使用Application子类进行信息共享