我正在尝试使用web-socket实现Android聊天应用程序。我使用Android服务连接到web套接字服务器。它工作正常,但是当我在任务管理器
中手动强制停止服务(不是应用程序)时(设置->应用程序->运行)
那么我的应用程序没有从服务器接收任何消息。我从其他聊天应用程序中观察到的是,即使我停止了这些应用程序的后台服务,它们也会接收消息,并且在一段时间后服务也会自动启动。这怎么可能?是否存在其他唤醒主应用程序线程的隐藏服务?
可以在每次强制停止时强制启动服务
看一下这个(如何自动重启一个服务,即使用户强制关闭它?)
这些应用程序大多使用推送服务,如Google Cloud Messaging。
持续轮询服务器或维护持久的web套接字不是一种从服务器接收消息的资源友好型方法。
据我所知,他们没有特殊的方法来做到这一点。他们可能有方便的"变通办法"(例如,Facebook Messenger可以唤醒FB应用程序,如果你安装并只关闭其中一个)。
从Android 3.1开始,应用程序不能唤醒自己,GCM也不能唤醒它。android 3.1的GCM推送通知:禁用广播接收器
CommonsWare通常知道自己在说什么。另外,我已经测试过了,它在3.1+ api上不适合我。