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
保持为私有成员,这样您就可以继续从自定义
处理程序
类内部调用
活动
方法