Android 计划后台任务的最佳实践

     2023-02-24     101

关键词:

【中文标题】Android 计划后台任务的最佳实践【英文标题】:Best practice for scehduled background task Android 【发布时间】:2015-08-17 00:54:43 【问题描述】:

我正在创建一个通知应用程序,它会在用户设置提醒通知后提醒他们。我目前的实现逻辑是:

    创建一个服务,当用户打开他们的应用程序时,该服务开始在后台运行。 在服务的 onCreate() 方法中,我正在实现一个 Timer 任务,该任务将在 5000 毫秒间隔后重复并调用一个方法,该方法将检查用户设置的所有提醒,并在当前时间设置任何提醒时通知用户。 我使用广播接收器在 Boot_Completed 事件上运行服务,以防万一用户关闭手机。

这个实现运行良好,我没有遇到任何问题,但我担心这是一个好的做法吗?请记住,每 5 秒运行和检查一次服务会消耗电池电量。此外,如果用户打开耐力模式、省电模式或任何此类模式,操作系统会终止我的服务。我可以做些什么来优先考虑我的服务不被杀死。

如果有任何其他更有效的方式来实现这类任务,我想在我的项目中实现它。

期待建议。

非常感谢。

【问题讨论】:

【参考方案1】:

最好的方法是这里提到的带有警报接收器的唤醒意图服务

https://github.com/commonsguy/cwac-wakeful

【讨论】:

【参考方案2】:

一切都好,但使用AlarmManager.setRepeating() 作为计时器。即使你的应用被杀,意图也会到来。

【讨论】:

与来自服务的活动(LocalService)通信 - Android 最佳实践

】与来自服务的活动(LocalService)通信-Android最佳实践【英文标题】:CommunicatewithActivityfromService(LocalService)-AndroidBestPractices【发布时间】:2011-06-2122:49:30【问题描述】:常见场景-使用后台服务轮询服务器的活动。Service将通过Alarm... 查看详情

Android上持久移动连接的最佳实践?

】Android上持久移动连接的最佳实践?【英文标题】:BestpracticeforpersistentmobileconnectionsonAndroid?【发布时间】:2012-06-2116:18:50【问题描述】:我正在考虑使用从Android应用到“云服务”的持久连接。这将一直在后台服务(或类似的服... 查看详情

更新 AWS ECS 服务任务的最佳实践

】更新AWSECS服务任务的最佳实践【英文标题】:BestPracticeforUpdatingAWSECSServiceTasks【发布时间】:2018-02-1114:51:51【问题描述】:我目前正在尝试设置一个简单的CI,它将重建我的项目、创建新的docker映像、将新映像推送到amazonecr存... 查看详情

celery最佳实践(转)

...。通常在使用Django的时候,你可能需要执行一些长时间的后台任务,没准你可能需要使用一些能排序的 查看详情

AWS 任务角色策略的最佳实践

】AWS任务角色策略的最佳实践【英文标题】:BestpractiseforanAWSTaskRolepolicy【发布时间】:2020-08-2503:26:43【问题描述】:我正在学习AWSECSFargate,我为我的ECS容器创建了一个任务角色,并且我刚刚为该角色添加了一些自定义和非自定... 查看详情

使用 Web 应用程序进行计划任务的最佳方法 [重复]

】使用Web应用程序进行计划任务的最佳方法[重复]【英文标题】:Bestwaytomakeascheduledtaskwithwebapp[duplicate]【发布时间】:2012-06-2311:01:47【问题描述】:可能重复:ASP.Net:Bestwaytorunscheduledtasks我必须为ASP.NET应用程序制定计划任务。该... 查看详情

flink任务实时监控最佳实践(代码片段)

我们都知道Flink任务是一个7*24小时不停运行的任务,所以对于任务的实时监控就显得尤为重要,因为任务运行的状态对于我们来说是一个黑盒,比如任务是否挂掉,是否存在反压,使用的内存,CPU等情况我们是不知道的,虽然Flink的UI上面... 查看详情

最佳实践 - iPhone 后台应用模式

】最佳实践-iPhone后台应用模式【英文标题】:BestPractice-iPhoneBackgroundApplicationMode【发布时间】:2011-04-0501:59:06【问题描述】:我目前正在测试最新的iOS4功能,以将我的位置感知应用置于后台。嗯,它确实有效!但另一方面,处... 查看详情

在 ASP.NET 上启动维护过程的最佳实践是啥 [关闭]

...)运行一个维护过程。在不依赖外部进程(如服务器上的计划任务)的情 查看详情

mysql学习之explain执行计划详解及最佳实践(代码片段)

  备注:环境mysql5.6.38一、EXPLAIN执行计划  使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或者表结构的性能瓶颈。  语法:Explain+SQL语句  在select语句之前增加expla... 查看详情

java并发编程实战-创建和执行任务的最佳实践

若无法通过并行流实现并发,则必须创建并运行自己的任务。运行任务的理想Java8方法就是CompletableFuture。Java并发的历史始于非常原始和有问题的机制,并且充满各种尝试的优化。本文将展示一个规范形式,表示创建和运行任务... 查看详情

flinkonyarn实时日志收集最佳实践(代码片段)

...算",选择"设为星标"再也不用担心错过重要文章 后台回复"监控",获取grafana监控Flink 最新的模板背景在Flinkonyarn的模式下,程序运行的日志会分散的存储在不同的DN上,当Flink任务发生异常的时候,我们需要查看日志来... 查看详情

进入后台时的 NSURLConnection 最佳实践

】进入后台时的NSURLConnection最佳实践【英文标题】:NSURLConnectionbestpractisewhenenterbackground【发布时间】:2013-08-0315:50:31【问题描述】:我在我的应用程序中注意到,当应用程序在加载时进入后台时会导致错误,例如"timeout"或"hostnam... 查看详情

java并发编程实战-创建和执行任务的最佳实践

...无法通过并行流实现并发,则必须创建并运行自己的任务。运行任务的理想Java8方法就是CompletableFuture。Java并发的历史始于非常原始和有问题的机制,并且充满各种尝试的优化。本文将展示一个规范形式,表示创建和... 查看详情

创建后台任务的两种代码模式

创建后台任务的两种代码模式后台任务是每个App都需要的一些行为,毕竟主线程是大爷,拖不起,伤不起,脏活累活都只能在不见天日的后台去做。最简单的后台任务,可以说是直接开一个线程就可以了,或者说来个Service,再... 查看详情

celery学习---celery最佳实践之与django结合实现异步任务

django可以轻松跟celery结合实现异步任务,只需简单配置即可同步执行和异步执行注意:即使Celery的任务没有执行完成,但是已经创建了任务ID。可以利用前台的定时任务发送Ajax异步请求根据ID查询结果项目整合项目的目录结构:... 查看详情

ansible最佳实践之playbook控制任务的执行(代码片段)

写在前面今天和小伙伴们分享一些Ansible中如何控制剧本任务执行的笔记博文内容分为两部分,控制任务执行,和控制主机执行顺序,涉及内容:剧本默认执行顺序分析Demo,先角色后任务import或include导入角色... 查看详情

java并发编程实战-创建和执行任务的最佳实践(代码片段)

...无法通过并行流实现并发,则必须创建并运行自己的任务。运行任务的理想Java8方法就是CompletableFuture。Java并发的历史始于非常原始和有问题的机制,并且充满各种尝试的优化。本文将展示一个规范形式,表示创建和... 查看详情