Android开发中使用Static静态变量带来的问题

来源:互联网 发布:算法之道 pdf 编辑:程序博客网 时间:2024/05/16 09:26

static修饰的静态变量,在不同的类和包中都可以使用,在虚拟机中单独占用内存,但是可能会出现NullException的异常。
static访问是无法跨进程的。Android中的Activity,Service是可以在各自进程中运行的,用static传递参数到不同进程的Activity、Service时会错。
static占据的那份内存,在接个电话或者长时间待机后,再回到应用也会出现崩溃的现象,而这些崩溃都与静态变量的空指针有关系。
根据Google官方的推荐,我们应该尽量使用继承自Application的自定义类,在我们继承的类中定义需要全局使用的变量,并通过getApplicationContext()来获取和保存相关的变量即可。
启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。
具体使用Application的用法我这里就不详细介绍了。
如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用Application context。
在Android中,我一般使用Static都是在以下场景:
1.static final常量
2.单例模式

0 0