首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以固定间隔10分钟执行后台任务的最佳实践

以固定间隔10分钟执行后台任务的最佳实践
EN

Stack Overflow用户
提问于 2019-09-18 20:37:20
回答 1查看 367关注 0票数 0

我有一个用于管理员工的应用程序,需要在工作时间以固定间隔10分钟追踪他们的位置。对于此工作管理器、服务或作业调度程序,最好的解决方案是什么?我已经尝试过服务,但当应用程序被强制关闭时,它不会运行并丢失员工位置

EN

回答 1

Stack Overflow用户

发布于 2019-09-18 22:01:37

为了周期性地跟踪位置,

大约用于X分钟的-推荐方式

  1. 使用Fused Location provider并适当设置时间。它为你提供频繁的位置更新回调,是Android推荐的位置获取方式。使用this
  2. Ensure设置您有位置权限的时间间隔。如果您没有

权限,则调用位置权限对话框

用于X分钟的Exact

  1. 使用粘性前台服务来持续跟踪位置,而不会杀死你的应用程序。检查示例here

请参见下面的示例

对于融合的位置提供程序

代码语言:javascript
复制
@Override
protected void onResume() {
    super.onResume();
    if (requestingLocationUpdates) {
        startLocationUpdates();
    }
}

private void startLocationUpdates() {
    fusedLocationClient.requestLocationUpdates(createLocationRequest,
            locationCallback,
            Looper.getMainLooper());
}

创建位置请求参数,如下所示:

代码语言:javascript
复制
protected static LocationRequest createLocationRequest() {

            LocationRequest mLocationRequest = LocationRequest.create();
            mLocationRequest.setInterval(LOCATION_UPDATE_TIME_INTERVAL_MINS * 60 * 1000);
            mLocationRequest.setFastestInterval(LOCATION_UPDATE_FATEST_TIME_INTERVAL_MINS * 60 * 1000);
            mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
            return mLocationRequest;
        }

有关接收定期位置更新的详细文档,请查看here

来自Commonsware answer的帖子在这里:当在后台周期性地做一些事情时- JobScheduler,WorkManager,AlarmManager,FCM推送消息,等等-你必须考虑到当你做你的工作的时候你的进程可能不在身边。Android将为你创建一个进程,但它是“从头开始”。您的UI可能已经在内存中设置的任何内容,例如数据库,都将用于之前的某个进程,并且可能不会在新进程中进行设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57993013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档