java - 如何使用代码从电池优化中排除 Android 应用
问题描述
我是 Android 新手,现在我正在开发一个基于 GPS 的项目。我从互联网(traccar)获得源代码。我的要求是应用程序应该每 1 公里或每 1 小时更新一次位置。但问题是应用程序在一段时间(10 - 20 分钟)后无法在后台运行。有什么解决方案吗?
当应用程序启动时,我应该做什么(在代码中)将该应用程序从电池优化中排除?可能吗 ?
解决方案
我认为你有两个不同的问题:
1)如果您想将您的应用程序保持在后台,您应该使用前台服务。这样,系统不会认为您的应用程序处于后台,并且其进程被杀死的机会大大降低。不利的一面是,只要您的服务在前台,您就需要显示永久通知。
2)您不能自行将您的应用排除在电池优化之外,但您可以提示用户设置将您的应用列入白名单。为此,您可以参考官方文档,您需要将Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
权限添加到清单,然后使用操作ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS启动意图。然后,用户将能够将您的应用列入白名单,只有她/他可以这样做,因为否则每个应用都会将自己列入白名单,并且电池优化的目的将被违背。
推荐阅读
- sql - Oracle:基于多对多关系选择最近
- assembly - 如何使用nasm在汇编中输出后暂停
- javascript - 我应该在 Promise.all 中使用 await 吗?
- javascript - 在 JavaScript 中拆分公司的工作地址
- c++ - C++ 中的高性能递归函数
- spring-boot - Spring Boot 管理未处理预订的最佳方法
- nim-lang - 大写文件名有什么意义?
- google-drive-api - 列出 Google 云端硬盘中的共享云端硬盘
- php - PHP OOP 不回显变量
- java - 如何在 java 中编写 Anagrams 出现次数的算法?