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.单例模式
Android开发中使用Static静态变量带来的问题
最新推荐文章于 2021-05-26 21:02:43 发布
本文深入分析了Android开发中全局变量的使用场景、注意事项及优化策略,重点介绍了如何避免静态变量引发的NullPointerException异常,推荐使用Application类进行全局变量管理,确保应用的稳定性和性能。
4708

被折叠的 条评论
为什么被折叠?



