Android GCM是保持数据库同步的可靠方法吗?

Android GCM是保持数据库同步的可靠方法吗?,android,google-cloud-messaging,Android,Google Cloud Messaging,我正在为webservice API开发一个客户端,其中一些数据持久存储在SQLite数据库中 GCM是保持数据同步的可靠方法吗 我的意思是,GCM推送通知是否足以保持数据同步,或者消息可能会“丢失”或者服务可能不可用?GCM主要设计为一种“挠痒”机制,帮助您主动意识到,您可以通过其他方式检索信息。虽然可以打包比4K有效载荷更多的数据,但GCM没有任何类型的可靠性保证、及时性保证等 因此,使用GCM作为轮询的附件来保持数据库同步似乎是完全合理的。使用GCM作为数据库更改的唯一传递机制似乎是危险的

我正在为webservice API开发一个客户端,其中一些数据持久存储在SQLite数据库中

GCM是保持数据同步的可靠方法吗


我的意思是,GCM推送通知是否足以保持数据同步,或者消息可能会“丢失”或者服务可能不可用?

GCM主要设计为一种“挠痒”机制,帮助您主动意识到,您可以通过其他方式检索信息。虽然可以打包比4K有效载荷更多的数据,但GCM没有任何类型的可靠性保证、及时性保证等


因此,使用GCM作为轮询的附件来保持数据库同步似乎是完全合理的。使用GCM作为数据库更改的唯一传递机制似乎是危险的。

GCM主要是作为一种“挠痒”机制来设计的,以帮助您主动意识到有信息可供您通过其他方式检索。虽然可以打包比4K有效载荷更多的数据,但GCM没有任何类型的可靠性保证、及时性保证等


因此,使用GCM作为轮询的附件来保持数据库同步似乎是完全合理的。使用GCM作为数据库更改的唯一传递机制似乎很危险。

我应该如何决定是否需要在服务器上检查旧数据以进行更新?每次用户查看数据时检查更新,这与推送而不是轮询的想法大相径庭。@GalBen Haim:“我应该如何决定是否需要在服务器上检查旧数据以进行更新?”——我怎么知道?我不是你。我没有写这个应用程序。我没有编写服务器。我不知道什么是“数据”,什么是“旧的”,或者你的应用程序周围的任何商业规则。这是一个理论问题,假设SQLite数据库应该与远程数据库同步。每当远程服务器上发生更改时,就会发送GCM消息并同步SQLite。不过,也可能会出现消息丢失或服务不可用的情况。我说的是一种情况,SQLite数据库中已经存在的数据应该用新的数据刷新。什么是了解这一点的有效方法?“愚蠢”的方法是在用户要求查看数据时刷新所有数据。我接受了您的答案,并打开了一个新问题-我认为同步适配器是您答案的解决方案。请参见:我应该如何决定是否需要在服务器上检查旧数据以进行更新?每次用户查看数据时检查更新,这与推送而不是轮询的想法大相径庭。@GalBen Haim:“我应该如何决定是否需要在服务器上检查旧数据以进行更新?”——我怎么知道?我不是你。我没有写这个应用程序。我没有编写服务器。我不知道什么是“数据”,什么是“旧的”,或者你的应用程序周围的任何商业规则。这是一个理论问题,假设SQLite数据库应该与远程数据库同步。每当远程服务器上发生更改时,就会发送GCM消息并同步SQLite。不过,也可能会出现消息丢失或服务不可用的情况。我说的是一种情况,SQLite数据库中已经存在的数据应该用新的数据刷新。什么是了解这一点的有效方法?“愚蠢”的方法是在用户要求查看数据时刷新所有数据。我接受了您的答案,并打开了一个新问题-我认为同步适配器是您答案的解决方案。见此: