Android-可以多次注册接收者吗?

时间:2018-06-30 16:32:16

标签: java android android-studio

//Gives current batterie temperature in celsius
public void  getBatteryTemperature()
{
    BroadcastReceiver BatterieTemperatureReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            int batTemp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0)/10;
            //optional Log output for debug
            Log.i("batterietemperature", String.valueOf(batTemp) + "°C");
        }
    };
    this.getContext().registerReceiver(BatterieTemperatureReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}

//Gives current batterie level in percent 
public void  getBatteryLevel()
{
    BroadcastReceiver BatterieLevelReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            int batLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);
            //optional Log output for debug
            Log.i("BatterieLevel", "Level " + batLevel + "%");
        }
    };
    this.getContext().registerReceiver(BatterieLevelReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}

此方法在我的Main中被调用,但是在开发时我问自己是否可以多次注册接收者?还是会引起麻烦?做这样的事情感觉有点不好... 我希望这里允许这样的问题:)

1 个答案:

答案 0 :(得分:0)

我不明白为什么您不能将它们连接在一起并创建BatteryInfoReceiver,将其注册一次并同时提取温度和剩余果汁的数量。

不过,您的方法似乎还不错。调用两个接收器的开销可以忽略不计,以字节为单位,系统必须记住两个不同的接收器而不是两位数的存储量。

最后,如果可行,我将其保留为=)