最频繁触发Android接收器?

时间:2017-12-21 12:13:00

标签: android broadcastreceiver android-broadcastreceiver

最常触发的Android意图操作是什么,我的应用可以BroadcastReceiver监听没有服务运行以便接收它?

背景

我有一个前台服务,只要用户出现在手机上,就需要粗略。当屏幕关闭时,我关闭了服务,因此可以实现打盹模式(是的,前台运行服务阻止打盹模式,即使文档没有明确说明)。

尝试重新打开服务时出现问题 我已经查看了SCREEN_ONUSER_PRESENT,但两者似乎都需要一个正在运行的后台服务才能被接收,从而否定了我想要实现的目标。

所以我的想法是,我想知道当用户在场时我是否有足够频繁的触发操作我可以听取而不是SCREEN_ON / USER_PRESENT

1 个答案:

答案 0 :(得分:0)

我发现执行此操作的最佳方法是在"android.intent.action.USER_PRESENT"操作上注册BroadcastReceiver。

要区分用户在屏幕未锁定时实际解锁的情况,请使用KeyguardManager检查安全设置。

在活动中添加此内容

registerReceiver(new PhoneUnlockedReceiver(), new IntentFilter("android.intent.action.USER_PRESENT"));

并使用此:

public class PhoneUnlockedReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        KeyguardManager keyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
        if (keyguardManager.isKeyguardSecure()) {

            //do stuff here                
        }
    }
}

快乐的编码!!