在进入省电模式之前,如何创建一个Android监听器来执行任务?另外:此任务可以控制哪些低功耗选项?
发布于 2016-08-10 04:21:19
上面的答案(对于API 21和更高版本)并不完全正确。您应该在您的活动或服务中注册一个接收者,如下所示:
BroadcastReceiver powerSaverChangeReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
checkPowerSaverMode();
}
};
IntentFilter filter = new IntentFilter();
filter.addAction("android.os.action.POWER_SAVE_MODE_CHANGED");
registerReceiver(powerSaverChangeReceiver, filter);原因是清单中的接收器不是由该广播触发的。
ACTION_POWER_SAVE_MODE_CHANGED
当isPowerSaveMode()的状态改变时广播的意图。此广播仅发送给已注册的接收者。
我已经测试过了,它是有效的。
发布于 2015-05-25 14:20:56
由于棒棒糖(API21)存在PowerManager#ACTION_POWER_SAVE_MODE_CHANGED广播意图。
所以你只需要接收它:
AndroidManifest.xml:
<receiver android:name=".observers.PowerSaveModeReceiver">
<intent-filter>
<action android:name="android.os.action.POWER_SAVE_MODE_CHANGED"/>
</intent-filter>
</receiver>
PowerSaveModeReceiver.java:
public class PowerSaveModeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
if (BuildConfig.DEV_LOGS)
Log.d(this.getClass().getName(), String.format("onReceive(context = [%s], intent = [%s])", context, intent));
final PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (pm.isPowerSaveMode()) {
// do something
} else {
// do some else
}
}
}发布于 2010-11-10 06:58:43
如何在进入省电模式之前创建一个Android监听器来执行任务?
没有用于此的广播Intent。最接近的是ACTION_SCREEN_OFF。在您收到此广播后,设备可能会在不久的将来进入睡眠状态。而且,您只能在活动或服务或其他Context中使用通过registerReceiver()注册的BroadcastReceiver来收听此广播。
还有:这个任务可以控制的低功耗选项有哪些?
我不知道这是什么意思,抱歉。
https://stackoverflow.com/questions/4139149
复制相似问题