获取某一特定Activity实例的方法

来源:互联网 发布:利拉德本赛季场均数据 编辑:程序博客网 时间:2024/04/29 19:58

获取内存中可能存在的特定Activity实例

如何判断某一 Activity 的实例 在当前内存中是否存在,这样做的意义在于,当我们想要在某个 Activity 存在时,不让某一事件发生。换一句话来说就是,把 sInstance != null 作为一个判断条件。目的达到。这只是 Activity 实例的一种用法。当然可以用这个实例来得到它本身就有的一些数据。下面说一下具体做法。

1, 定义一个静态的类型为 Activity 的引用:sInstance

  • public static Activity sInstance = null;
    • 可以通过类名直接调用
    • 这个引用放在了静态区,会优先加载且存在很长一段时间。
    • Java里面是没有全局变量的,通过使用关键字 static 可以得到一个伪全局变量,可以用来追踪一些比较麻烦的实例的生命周期。它对于内存我影响我还不是很清楚,但是这是一种很好的想法。

2, 在 ActivityonCreate() 方法中,对 sInstance 进行赋值操作,将实例传过去。

  • sInstance = this;

3, 在 ActivityonDestroy() 方法重新对 sInstance 进行赋值,避免出现内存泄漏。更像是实例被销毁的标志。

  • sInstance = null;

4, 得到这个可能存在的实例:通过类名直接调用

  • ClassName.sInstance 即为可能存在的实例。

总结

这只是获取实例的一个方法,很容易理解。但是不建议大量使用,因为这样会有很多的 static 变量。我个人感觉还行,可能别人不习惯吧。要用的话还是和同事多商量商量。另外,不要把 Activity 写成 SingleInstance 的形式,不要忘了。 Activity 是有一个叫做 LauncherMode 的东西的。直接把在 Manifest.xml 里把模式设置成单例模式即可。

原创粉丝点击