作为相对较新的 android 平台,我被赋予了实现电子邮件客户端的任务。为此,我想使用始终在后台运行的服务(客户端应始终在服务器收到电子邮件后立即收到电子邮件,这是客户的要求)。
现在我已经查看了 android 中的服务,但似乎找不到关于服务应该是本地还是远程的任何好的答案。
选择其中一个的主要优点/缺点是什么?请记住,服务必须始终运行。我知道我知道。坏的。但它对于应用程序的核心功能至关重要。
作为相对较新的 android 平台,我被赋予了实现电子邮件客户端的任务。为此,我想使用始终在后台运行的服务(客户端应始终在服务器收到电子邮件后立即收到电子邮件,这是客户的要求)。
现在我已经查看了 android 中的服务,但似乎找不到关于服务应该是本地还是远程的任何好的答案。
选择其中一个的主要优点/缺点是什么?请记住,服务必须始终运行。我知道我知道。坏的。但它对于应用程序的核心功能至关重要。
首先,在 Android 上像这样从远程服务器发出即时通知的正确/有效方法是使用Google Cloud Messaging。GCM 允许您通过向应用程序发送 Intent 来远程唤醒设备,然后您可以将其用作从服务器获取消息、向状态栏发布通知等的信号。
除非您完全正确,否则使用永久运行的服务执行您所描述的操作将对电池寿命产生重大影响。让手机一直处于唤醒状态并不是一个可行的选择。使用 GCM,不要为此推出自己的解决方案。
但是由于您的问题是关于是否在单独的进程中运行服务的问题更为笼统,因此通常越简单越好,在这种情况下,更简单意味着在同一进程中运行。您将可以访问内存中应用程序进程的所有各种元素,并且通常您可能会更轻松。你的事件都将发生在同一个主线程的 Looper 上。一切都会变得简单得多。
如果您还没有充分的理由为您的服务使用单独的进程,则应该在同一进程中运行它。
一般来说,我不知道你为什么要使用另一个进程的原因。如果你愿意 - 你将不得不处理所有这些 AIDL、包裹等的进程间通信。
如果您将保持相同的过程 - 在组件之间传输数据会容易得多。
我认为创建多个进程的唯一原因是尽量避免 Android 堆预算限制。您可以尝试在进程之间移动重物并尝试将限制加倍。但是我认为你不需要这个,这也是不好的方式。
所以我建议不要玩流程,让事情尽可能简单。
祝你好运