最频繁触发Android接收器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最频繁触发Android接收器?相关的知识,希望对你有一定的参考价值。

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

背景

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

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

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

答案

我发现最好的方法是在"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                
        }
    }
}

快乐的编码!!

以上是关于最频繁触发Android接收器?的主要内容,如果未能解决你的问题,请参考以下文章

Android:片段内的按钮操作

回收器中的Android片段数据加载

如何将回收器视图添加到片段

Android从地图片段底部拖动回收器视图

Android LiveData防止在观察时接收到最后一个值

超全超香,数据分析与数据挖掘最频繁使用代码合集来了