获取电池电量前广播接收器响应为Intent.ACTION_BATTERY_CHANGED接收器、电池电量、ACTION_BATTERY_CHANGED、Intent

2023-09-11 20:28:29 作者:久醉绕心弦

我有一个广播接收器在我的计划得到反应,像这样的电池电量:

 私人的BroadcastReceiver mBatInfoReceiver =新的BroadcastReceiver(){
    @覆盖
    公共无效的onReceive(背景为arg0,意图意图){
        INT级别= intent.getIntExtra(水平,0);
        // 做一点事...
    }
}

    registerReceiver(this.mBatInfoReceiver,
            新的IntentFilter(Intent.ACTION_BATTERY_CHANGED));
 

然而此code的等待电池状态被更新,所以如果你有一个需要基于电池电平,它必须等待到发生一个电池事件将要设定的GUI元素。有没有办法来轻推该得到它的工作或只是运行一些code,看看电池电量是在最后广播?

解决方案   

有没有办法来轻推该得到它的工作或只是运行一些code,看电池电量是什么   过去的广播?

您可以致电 registerReceiver()的IntentFilter 的BroadcastReceiver ,以获得最后的广播意图。这样做是因为 ACTION_BATTERY_CHANGED 是一个所谓的持久广播,我描述了一个多一点的this StackOverflow的问题和回答。

android多个按钮绑定同一个监听器

I have a broadcast receiver in my program to get react to the battery level like so:

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context arg0, Intent intent) {
        int level = intent.getIntExtra("level", 0);
        // do something...
    }
}

    registerReceiver(this.mBatInfoReceiver, 
            new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

However this code has to wait for the battery status to be updated so if you have a GUI element that needs to be set based on the battery level it must wait for a battery event to occur. Is there a way to nudge this to get it working or simply run some code to see what the battery level was on the last broadcast?

解决方案

Is there a way to nudge this to get it working or simply run some code to see what the battery level was on the last broadcast?

You can call registerReceiver() with your IntentFilter and a null BroadcastReceiver to get the last-broadcast Intent. This works because ACTION_BATTERY_CHANGED is a so-called "sticky broadcast", which I describe a bit more in this StackOverflow question-and-answer.

 
精彩推荐