即使在打瞌睡模式下也每 15 秒获取一次位置
Get location every 15 seonds even in doze mode
我想每 15 秒获取一次位置并且一切正常,但是在打瞌睡模式(深度睡眠)下我的处理程序不工作,是吗? AlarmManager 是个好方法,但时间限制是 1 分钟,在打瞌睡模式下不会重复。
@ReactMethod
public static void setAlarm()
{
int interval = 50; // delay in secs
AlarmManager am = (AlarmManager) reactContext.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(reactContext, AlarmManagerReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(reactContext, 0, intent, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval*1000 , pi);
}
接收者:
public class AlarmManagerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
DoRoutine();
}
}
I want to get location every 15 sec and everything is ok
不是真的。
首先,完全不能保证您可以定位。例如,GPS 信号在室内或地下并不总是可用。
其次,不能保证您每 15 秒就会获得一个新的位置修复。例如,设备可能没有移动。
第三,on Android 8.0+,除非您的应用程序在前台,否则您不会经常在任何地方获得位置修复。
but in doze mode(deep sleep) my handler not working, is anyway?
第一步:希望用户将您的应用加入电池优化白名单
第 2 步:使用前台服务
第 3 步:请求每 15 秒向您发送一次位置更新(例如,requestLocationUpdates()
在 LocationManager
)
第 4 步:使用部分 WakeLock
保持设备开机(即使屏幕关闭)
第 5 步:希望用户不要因为如此严重地耗尽电池而杀死你
我想每 15 秒获取一次位置并且一切正常,但是在打瞌睡模式(深度睡眠)下我的处理程序不工作,是吗? AlarmManager 是个好方法,但时间限制是 1 分钟,在打瞌睡模式下不会重复。
@ReactMethod
public static void setAlarm()
{
int interval = 50; // delay in secs
AlarmManager am = (AlarmManager) reactContext.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(reactContext, AlarmManagerReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(reactContext, 0, intent, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval*1000 , pi);
}
接收者:
public class AlarmManagerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
DoRoutine();
}
}
I want to get location every 15 sec and everything is ok
不是真的。
首先,完全不能保证您可以定位。例如,GPS 信号在室内或地下并不总是可用。
其次,不能保证您每 15 秒就会获得一个新的位置修复。例如,设备可能没有移动。
第三,on Android 8.0+,除非您的应用程序在前台,否则您不会经常在任何地方获得位置修复。
but in doze mode(deep sleep) my handler not working, is anyway?
第一步:希望用户将您的应用加入电池优化白名单
第 2 步:使用前台服务
第 3 步:请求每 15 秒向您发送一次位置更新(例如,requestLocationUpdates()
在 LocationManager
)
第 4 步:使用部分 WakeLock
保持设备开机(即使屏幕关闭)
第 5 步:希望用户不要因为如此严重地耗尽电池而杀死你