每两分钟不活动(无用户交互)采取行动
Take action for every two minutes of inactivity (no user interaction)
我正在尝试在用户 2 分钟未与应用程序交互时写入文件。目前我有基础 activity ,我已经在其中覆盖了 onUserInteraction 方法。在这个方法中,浮动时间变量被重置,onResume 我用当前时间减去时间来检查是否已经过去了两分钟。这很好用,但有时表现得很疯狂。第二种方法是使用 Handler 的 postDelayed 方法并启动一个线程。这非常有效,但不包括应用程序进入后台或设备进入 sleep.Is 的情况,有一种方法可以涵盖所有这些情况。 ahve研究了很多。也遇到了 Wakeful Intent 服务,但读到它很昂贵。
我不知道 activity 中的跟踪方法,但有一种方法可以跟踪用户 activity。您可以在您的活动中捕获一个名为 onUserInteraction() 的回调,每次用户与应用程序进行任何交互时都会调用该回调。我建议这样做:
@Override
public void onUserInteraction(){
MyTimerClass.getInstance().resetTimer();
}
如果您的应用程序包含多个活动,为什么不将此方法放在抽象超级 class(扩展 Activity)中,然后让所有活动扩展它。
Is there a way to cover all these cases.
是的。 ……而且很贵。唤醒 phone,每 2 分钟就会疯狂耗尽电池电量。
也就是说,您的问题的答案是您需要使用 AlarmManager, probably in concert with either the WakefulIntentService
or the WakefulBroadcastReceiver
。创建一个 PendingIntent
并安排每 2 分钟发送一次。
我正在尝试在用户 2 分钟未与应用程序交互时写入文件。目前我有基础 activity ,我已经在其中覆盖了 onUserInteraction 方法。在这个方法中,浮动时间变量被重置,onResume 我用当前时间减去时间来检查是否已经过去了两分钟。这很好用,但有时表现得很疯狂。第二种方法是使用 Handler 的 postDelayed 方法并启动一个线程。这非常有效,但不包括应用程序进入后台或设备进入 sleep.Is 的情况,有一种方法可以涵盖所有这些情况。 ahve研究了很多。也遇到了 Wakeful Intent 服务,但读到它很昂贵。
我不知道 activity 中的跟踪方法,但有一种方法可以跟踪用户 activity。您可以在您的活动中捕获一个名为 onUserInteraction() 的回调,每次用户与应用程序进行任何交互时都会调用该回调。我建议这样做:
@Override
public void onUserInteraction(){
MyTimerClass.getInstance().resetTimer();
}
如果您的应用程序包含多个活动,为什么不将此方法放在抽象超级 class(扩展 Activity)中,然后让所有活动扩展它。
Is there a way to cover all these cases.
是的。 ……而且很贵。唤醒 phone,每 2 分钟就会疯狂耗尽电池电量。
也就是说,您的问题的答案是您需要使用 AlarmManager, probably in concert with either the WakefulIntentService
or the WakefulBroadcastReceiver
。创建一个 PendingIntent
并安排每 2 分钟发送一次。