我的应用程序是一组活动,我没有子类化应用程序。有一个静态单例类运行循环计时器 (java.util.Timer)。当用户离开我的应用程序时,需要暂停该计时器。
如果只有一个活动,我可以暂停和恢复 MainActivity 的计时器 onPause() 和 onResume()。在我的情况下,我应该如何解决这个问题?
在和中创建BaseActivity
和暂停和恢复计时器。然后从中派生所有其他活动。onPause
onResume
BaseActivity
如果你有这个静态单例,你可以通过onPause()
每个onResume()
活动调用。
将调用放入 Activity 的子类中以减少代码重复。在您的所有活动中扩展这个新的子类。
如果您的所有活动在应用程序中保持打开状态,您可以使用它,如果应用程序关闭,isFinishing() 将在您的 onPause() 中调用
@Override
public void onPause() {
if(isFinishing()){
//code to finish() all activitys threads etc.....
}
super.onPause();
}
我发现onDestroy
并被onCreate
适当地调用,所以我覆盖了那些。
覆盖所有活动会很麻烦onPause
,onStart
因为每次启动新活动时都会暂停和恢复计时器。
你可以做很多事情:
什么都不做,当用户离开所有活动时,您的应用程序将停止并且您的所有对象,即使是静态单例也会从内存中释放。
通过这个单例跟踪活动活动,当没有人活动时暂停计时器。