我的应用程序包含基于登录的用户系统,用户将在其中接收任务。用户的任务列表需要定期与服务器同步,以便任何新任务立即反映在应用程序上。我之前在其他应用程序中做过这种同步,但我想知道最好的方法。我有两种方法,请让我知道哪一种更好,或者如果您有任何其他想法,请告诉我。
APPROACH 1
我可以使用IntentService和AlarmManager以固定的时间间隔运行后台服务,并通过http请求(即app to server request)检查服务器上的任何更改。
APPROACH 2
我可以使用NanoHTTPD库通过我的应用程序托管一个小型TCP服务器,并且在服务器上的每个新条目之后,我可以向服务器发出请求,通知这些小TCP主机,通知这些更改(即服务器到应用程序请求)
我之前使用过 APPROACH1 ,但我对 APPROACH2 感兴趣(我认为这会耗尽更少的电量)。所以,请让我知道哪一个更好的方式(即更高效,更安全等)来做到这一点。如果您有任何其他想法,请随时分享。
答案 0 :(得分:4)
你的两种方法都会大大耗尽电池。
这里的最佳做法是使用推送通知。您所要做的就是向FireBase Cloud Messaging等知名服务提供商注册您的应用程序,然后配置您的应用程序服务器,以便向云消息服务发送通知,该服务将处理您的通知发送。
并且您不必担心电池使用情况,因为他们使用Google Play服务来保持连接畅通。
您需要做的就是简单地覆盖服务的onMessageReceived方法并从那里更新您的数据。
答案 1 :(得分:2)
为什么不尝试使用推送通知服务? 在电池寿命和网络使用方面,这将是一个更好的选择。
修改强> 在我看来,最好避免拉动(定期向服务器请求)以节省电池并节省网络的使用。 因此,解决方案可以通过Google Cloud Messaging / Firebase等服务实施推送通知(您的服务器将通知应用程序有新的要求)。