Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用服务器更新应用程序的最佳方式是什么?_Java_Android_Performance_Intentservice_Nanohttpd - Fatal编程技术网

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

Java 使用服务器更新应用程序的最佳方式是什么?,java,android,performance,intentservice,nanohttpd,Java,Android,Performance,Intentservice,Nanohttpd,我的应用程序由基于登录的用户系统组成,用户将在其中接收任务。用户的任务列表需要定期与服务器同步,以便任何新任务都能立即反映在应用程序上。我以前在其他应用程序中也做过这种同步,但我想知道最好的方法。我有两种想法,请告诉我哪种更好,或者如果你有其他想法,请告诉我 方法1 我可以使用和以固定的时间间隔运行后台服务,并通过http请求(即应用程序到服务器请求)检查服务器上的任何更改 方法2 我可以使用库通过我的应用托管一个小型TCP服务器,在服务器上的每个新条目之后,我可以从服务器向这个小型TCP主机发

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

方法1

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

方法2

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


我以前使用过approach 1,但我对approach 2更感兴趣(我认为这样会消耗更少的电池)。因此,请让我知道哪种方法更好(即更高效、更安全等)。如果您有任何其他想法,请随时与我们分享。

您的两种方法都会极大地消耗电池电量

这里的最佳实践是使用推送通知。您只需向FireBase Cloud Messaging等知名服务提供商注册应用程序,然后配置应用程序的服务器向云消息服务发送通知,云消息服务将处理通知的传递

而且你不必担心电池的使用,因为他们使用谷歌play服务来保持连接的畅通


您需要做的是简单地覆盖服务的onMessageReceived方法并从那里更新数据。

为什么不尝试使用推送通知服务? 在电池寿命和网络使用方面,这将是一个更好的选择

编辑: 在我看来,为了节省电池和节省网络的使用,最好避免拉(定期请求服务器)。
因此,解决方案可以是通过Google Cloud Messaging/Firebase等服务实现推送通知(您的服务器将通知应用程序有新的请求)。

您可以通过SocketThinkDB、Realm、Couchbase mobile、,解析服务器都是为实时同步而构建的自托管数据库选项time@cricket_007哪一个是更好的领域或配置Firebase取决于您是否想要托管解决方案OK,我很抱歉,我将尝试改进我的答案@anj0感谢您的回答看起来每个人都在使用firebase:DThanks快速响应。我不知道google play services会保持连接打开,这对我来说真的很有帮助。