版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boatImpish/article/details/75633635
获取内存中可能存在的特定Activity实例
如何判断某一
Activity
的实例 在当前内存中是否存在,这样做的意义在于,当我们想要在某个Activity
存在时,不让某一事件发生。换一句话来说就是,把sInstance != null
作为一个判断条件。目的达到。这只是Activity
实例的一种用法。当然可以用这个实例来得到它本身就有的一些数据。下面说一下具体做法。
1, 定义一个静态的类型为 Activity
的引用:sInstance
public static Activity sInstance = null;
- 可以通过类名直接调用
- 这个引用放在了静态区,会优先加载且存在很长一段时间。
- Java里面是没有全局变量的,通过使用关键字
static
可以得到一个伪全局变量
,可以用来追踪一些比较麻烦的实例的生命周期。它对于内存我影响我还不是很清楚,但是这是一种很好的想法。
2, 在 Activity
的 onCreate()
方法中,对 sInstance
进行赋值操作,将实例传过去。
sInstance = this;
3, 在 Activity
的 onDestroy()
方法重新对 sInstance
进行赋值,避免出现内存泄漏。更像是实例被销毁的标志。
sInstance = null;
4, 得到这个可能存在的实例:通过类名直接调用
ClassName.sInstance
即为可能存在的实例。
总结
这只是获取实例的一个方法,很容易理解。但是不建议大量使用,因为这样会有很多的
static
变量。我个人感觉还行,可能别人不习惯吧。要用的话还是和同事多商量商量。另外,不要把Activity
写成SingleInstance
的形式,不要忘了。Activity
是有一个叫做LauncherMode
的东西的。直接把在Manifest.xml
里把模式设置成单例模式即可。