您应该尝试使用基于显示的事件以及上次启用时的事件.
为ACTION_SCREEN_ON,ACTION_SCREEN_OFF和ACTION_USER_PRESENT注册广播接收器并正确保存时间戳.
请注意,如果WhatsApp等应用程序自动启用显示器以显示新消息,则Screen-Events也会被触发.因为这个事实你应该坚持ACTION_USER_PRESENT.
这是一些代码:
Android系统的Manifest.xml
广播接收器
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class UserPresentBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent intent) {
/*Sent when the user is present after
* device wakes up (e.g when the keyguard is gone)
* */
if(intent.getAction().equals(Intent.ACTION_USER_PRESENT)){
}
}
}
注意:您需要一个单独的线程(最好是一个守护程序线程)来将该时间戳与当前时间进行比较.