像Facebook,Whatsapp这样的Android应用程序如何在没有通知的情况下在前台提供服务



我的应用程序有一个在启动期间启动的服务,它需要继续运行。但是,当我通过在"最近的应用程序"屏幕上滑动来关闭我的应用程序时,服务停止。为了解决这个问题,我使用了带有通知的startForeground,现在即使我杀死应用程序,我的服务也会继续运行。我的问题是:Facebook,Whatsapp等应用程序如何运行?他们有服务,即使我们杀死应用程序也能继续运行,但我在通知栏中没有看到任何通知说"Facebook正在运行"或"Whatsapp正在运行"。

没有官方支持的方法可以在没有前台通知的情况下保持服务运行(也不应该有)。如果发现任何漏洞可以解决这个问题,谷歌肯定会(并且过去已经)修复它们,破坏任何利用它们的应用程序。

我不能说Facebook和Whatsapp究竟是如何工作的,但如果你问他们如何实时通知用户新消息,他们很可能依靠谷歌云消息传递(GCM)进行推送通知,这不需要服务或你的应用程序持续运行。

这个错误是在 Android 4.4.1 中引入的。在此之前,刷出并没有杀死任何服务。这是问题的链接https://groups.google.com/forum/#!topic/android-developers/H-DSQ4-tiac

您必须通过在 manifiest.xml 文件中定义服务进程来为您的服务创建一个单独的进程。应用和服务都在单独的进程中运行。你的应用被杀死,但你的服务继续运行。

<service android:enabled=["true" | "false"]
         android:exported=["true" | "false"]
         android:icon="drawable resource"
         android:isolatedProcess=["true" | "false"]
         android:label="string resource"
         android:name="string"
         android:permission="string"
         android:process="string" >
    . . .
</service>

最新更新