繁体   English   中英

如何保存广播接收器的价值并将其返回?

[英]How to save value from Broadcast receiver and return it?

我尝试保存并返回我从我编写的广播接收器方法中获得的值,但是它将无法正常工作。 使用接收器内部的Log来打印值特别有效,但是我无法保存该值。 希望有人能为我提供一个简单的解决方案。

//Gives current battery temperature in celsius
public String  getBatteryTemperature()
{
    final int[] batTemp = new int[1];
    BroadcastReceiver batteryTemperatureReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            batTemp[0] = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0)/10;
            //optional Log output for debug (works)
            Log.i("Log battery temperature", String.valueOf(batTemp[0]) + "°C");
        }
    };
    IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    this.getContext().registerReceiver(batteryTemperatureReceiver, intentFilter);
//only returns 0 
    return String.valueOf(batTemp[0]);
}

这是因为您的方法会在收到通知之前返回。 在这种情况下,您的接收器类仅具有局部作用域,但包含对封闭类的引用(我假设是活动),并且在您退出方法时不会被破坏。

因此,您可以使其成为成员变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM