0

我正在开发一个应用程序,该应用程序在启动时启动一个活动,该活动使用服务(由 startService 启动)登录到我的服务器(需要通过 facebook 登录的活动)。该服务建立 XMPP 侦听器,之后什么也不做,只是等待连接。我希望该服务在设备启动时一直运行。

问题是活动在一段时间后停止,我的服务也停止了。该服务返回 START_STICKY 所以我期待它会挂起。此外,该服务除了等待连接之外什么也不做。

该活动具有以下属性: android:excludeFromRecents="true" android:noHistory="true" android:launchMode="singleInstance"

这样它就不会出现在任务列表中(当用户长按主页按钮时)。

当用户长按主页按钮并且服务也结束时,活动停止。我认为应用程序可能退出,这就是服务也结束的原因。我找不到任何方法来阻止活动停止。也许是因为上述特性而停止。

那么我该怎么做才能让服务始终运行。如何防止应用程序被删除。我在某处读到,如果我在服务中运行一个 while 循环,那么 START_STICKY 可以保留服务吗?我可以使用 AlarmManager 启动服务,但我不希望它轻易停止,然后每次都必须重新启动它。

我不想运行前台服务。我无法在不同的进程中运行该服务,因为我使用的是不执行 IPC 的现有代码。任何帮助将不胜感激。谢谢。

4

1 回答 1

0

有两件事可以无限期地运行服务;使用 startService() 创建服务并从 onStartCommand() 返回 START_STICKY。你似乎都在这样做。通过这两个步骤,服务可能会被系统关闭,但它应该几乎立即重新启动。

我唯一的建议是在服务中创建一个单独的线程。这是因为默认情况下,启动的服务在应用程序主线程中运行。如果服务一直在执行某些任务,它可能会阻塞主线程并杀死应用程序。谷歌文档有一个实现这个的例子:

http://developer.android.com/guide/components/services.html#ExtendingService

于 2015-09-10T15:43:57.890 回答