Android 将计时器传递给弱引用
我不是Android 将计时器传递给弱引用,android,performance,timer,Android,Performance,Timer,我不是WeakReferences方面的专家,因为我刚刚在这一过程中结识了他们 我在活动中使用定时器和定时器任务。 众所周知,在创建计时器的新实例之前,只要对计时器调用了cancel(),就无法重用计时器 因此,我要做的是在我的活动中全局创建一个计时器 定时器 在onResume()中,我通过timer=new timer()实例化它 这样做的原因是为了避免计时器已被取消异常。因为onPause()可能会在手机屏幕锁定或其他情况下被调用,而我正在调用我的onPause()方法中的timer.ca
WeakReferences
方面的专家,因为我刚刚在这一过程中结识了他们
我在活动中使用定时器
和定时器任务
。
众所周知,在创建计时器的新实例之前,只要对计时器调用了cancel()
,就无法重用计时器
因此,我要做的是在我的活动中全局创建一个计时器
定时器代码>
在onResume()中,我通过timer=new timer()实例化它代码>
这样做的原因是为了避免计时器已被取消
异常。因为onPause()可能会在手机屏幕锁定或其他情况下被调用,而我正在调用我的onPause()
方法中的timer.cancel()
我的问题是,当计时器被取消时,它是否会自动变得易于进行垃圾收集,因为再次使用它完全没有意义。如果是这种情况,它的收集速度有多快
使用WeakReference
是否方便?如果没有,使用它有什么帮助?无论是否符合GC'ed计时器的资格,您都不会从保留WeakReference
到Timer
实例中获益,因为正如您所说,在cancel()
之后,它就不能再被重用了
WeakReference
有助于跟踪可以使用的对象,但如果没有其他人使用该对象(即没有人保留对该对象的[硬]引用),则不希望将该对象保留在RAM中。然后它将被GC'ed,您的WeakReference
也将变得无用。(并且您不会通过仅保留对象的WeekReference
来阻止对象的GC)
嗯,希望不是太模糊
我个人使用WeakReferences
大致了解junit测试中可能出现的内存泄漏
我可以给您另一个用法示例-而不是在活动
类中定义自定义的内部处理程序
类,它隐式引用了您的活动
,可能会造成潜在的内存泄漏,您可以将自定义处理程序类
定义为静态嵌套类,并将活动
实例的WeakReference
保持为私有成员,这样您就可以继续从自定义处理程序
类内部调用活动
方法