使您的应用程序随服务器更新的最佳方式是什么?

What is the best way keep your app updated with server?

我的应用程序由基于登录的用户系统组成,用户将在其中接收他的任务。用户的任务列表需要定期与服务器同步,以便任何新任务都能立即反映在应用程序上。我以前在其他应用程序中做过这种同步的事情,但我想知道最好的方法。我有两种方法,请让我知道哪种更好,或者如果您有任何其他想法,请告诉我。

方法 1

我可以使用 IntentService and AlarmManager 以固定时间间隔连接到 运行 后台服务,并通过 http 请求(即应用程序到服务器请求)检查服务器上的任何更改。

方法 2

我可以使用 NanoHTTPD 库通过我的应用程序托管一个小型 TCP 服务器,并且在服务器上的每个新条目之后我可以从服务器向这个小型 TCP 主机发出请求,通知这些更改(即服务器到应用程序请求)。

我以前用过 APPROACH1,但我对 APPROACH2 更感兴趣(我认为这会消耗更少的电量)。所以请让我知道哪种方法更好(即更高效、更安全等)。如果您有任何其他想法,请随时分享。

这两种方法都会显着耗尽电池电量。

此处的最佳做法是使用推送通知。您所要做的就是向 FireBase 云消息传递等知名服务提供商之一注册您的应用程序,然后配置您的应用程序的服务器以将通知发送到云消息传递服务,该服务将处理您的通知的传递。

而且您不必担心电池使用问题,因为他们使用 google 播放服务来保持连接打开。

您只需覆盖服务的 onMessageReceived 方法并从那里更新您的数据。

你为什么不尝试使用推送通知服务呢? 就电池寿命和网络使用而言,这将是一个更好的选择。

编辑: 在我看来,最好避免拉动(定期向服务器请求)以节省电池并节省网络的使用。 因此,解决方案可以是通过 Google Cloud Messaging/Firebase.

等服务实现推送通知(您的服务器将通知应用程序有新请求)