java - 小米杀死前台服务

标签 java android android-studio foreground

我想获取用户的位置。我负责前台服务并在每部手机上工作。但是小米手机,如果应用程序不在后台是关闭前台服务的。我尝试了所有打开自动启动器的方法。我已经通过设置允许一切,但事实并非如此。我已经尝试了一个月了,请大家帮忙。

最佳答案

我建议您使用闹钟。

您可以使用服务继续在后台和唤醒锁中执行代码,但我在几款特定的智能手机上遇到了与您描述的相同的问题,并且还发现如果 Android 系统需要可用内存,服务可以随时被终止。

我找到的解决方案是使用警报(执行前台服务的警报)。如果您安排闹钟,则无论您的应用程序是否仍在执行,该闹钟都会响起。这样,即使系统由于缺乏资源而终止了该服务,应用程序也可以获得设备位置。这是我发现在这种情况下唯一有效的解决方案。

我在一些 Google I/O 大会上想到了这个想法,当时他们说,如果你确实需要应用程序继续运行,那么无论发生什么,你都应该使用警报而不是服务。

使用精确的闹钟,因为在某些设备中,不精确的闹钟有时至少需要 5 分钟才能闹钟响起。

这对我有用,但我在两三年前就做过了。我希望它仍然有效。

关于java - 小米杀死前台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59695410/

相关文章:

Android 2.3.3 ListView 与 ScrollView

java - 令人惊讶的异常: Attempt to invoke virtual method 'java.lang.String android.net.Uri.getScheme()' on a null object reference

java - 我无法安装Android Studio(找不到JDK)

Java:如何使用AWT显示多行工具提示?

java - 静态数据是如何初始化的?

java - 使用从 DAO 获取的信息交换 View 中的值

android - 通过 Intent 以只读模式打开文件

android - gps打开/关闭时如何触发广播接收器?

安卓工作室 : Missing Strip Tool

java - 在 JTable 中,颜色应该显示在最后一列