有许多线程都有类似的问题和建议需要修复。我已经尝试了所有,除了将服务放在前台之外,没有一个适用于我的情况,我不想这么做。
我无法对现有主题发表评论,因为我没有足够的声誉,我想提问,所以无法回答。这是提出问题并寻找专家意见和建议的唯一选择。
讨论了类似问题的现有主题,
Time taken for Android Service to restart after being forcibly killed
Background Service getting killed in android
Android: Scheduling restart of crashed service with HUGE delay?
我的问题:
我有一个服务,它在启动时启动(听取意图BOOT_COMPLETED
)
我启动一个线程,通过套接字与其他服务进行交互,并在服务被终止时被中断(onDestroy)
。
在手机上使用无线网络,我的服务永远不会被机器人杀死,并且按预期工作。
如果我只切换到3G( At& T SIM ),我的服务大约会被杀死。在 1800秒(30分钟)之后,并计划在大约重新启动3600秒(1小时)。一直以来,服务启动的线程都在执行 SQLLite 调用并与其他服务进行交互。
Android认为我的服务已经空闲了1800多秒,并且会在很长的重启时间内终止它。
问题:
我需要做什么来告诉Android ActivityManager我的服务正在使用它旋转的线程工作,所以不应该被杀死。只发生在3G上。
如何将计时器减少到20秒以下。 1小时太长了。 我确实使用了AsyncTask来旋转其他线程,这个线程循环播放1秒,但我的服务仍然被杀死。
在确定要杀死哪项服务时使用3G与Wifi时Android行为如何变化?
答案 0 :(得分:0)
我发现android不支持长时间运行的后台服务。因此,当网络带宽受到更多限制时,我的服务需要与其他服务保持通信,特别是在3G / 4G上会被杀死。
我切换回前台模式,现在工作正常。我还是想听听是否有办法避免3G / 4G的前台模式。