Moh*_*sen 5 android handler alarmmanager android-doze
我想每 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);
}
Run Code Online (Sandbox Code Playgroud)
接收者 :
public class AlarmManagerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
DoRoutine();
}
}
Run Code Online (Sandbox Code Playgroud)
我想每 15 秒获取一次位置信息,一切正常
并不真地。
首先,无法保证您能够获得位置修复。例如,GPS 信号在室内或地下并不总是可用。
其次,无法保证您每 15 秒就会获得一次新的位置修复。例如,设备可能没有移动。
第三,在 Android 8.0+ 上,除非您的应用程序位于前台,否则您将不会频繁地获得位置修复。
但在打瞌睡模式(深度睡眠)下,我的处理程序不起作用,是吗?
步骤#1:希望用户将您的应用添加到电池优化白名单中
步骤#2:使用前台服务
步骤#3:请求每 15 秒向您发送一次位置更新(例如,requestLocationUpdates()在LocationManager)
步骤#4:使用部分电源WakeLock保持设备开机(即使屏幕关闭)
步骤#5:希望用户不要因为严重耗尽电池而杀死你
| 归档时间: |
|
| 查看次数: |
844 次 |
| 最近记录: |