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

获取内存中可能存在的特定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 里把模式设置成单例模式即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值