GCM 服务器不负责更新你的数据库,你可以用它来暗示你的应用,哟!我的服务器上有一些新东西要更新,让我们连接并下载新数据。它可以节省大量设备电池电量,您会浪费在内部某个定义的时间将服务器池化以检查更新的可用性。
您可以为您从 GCM 发送到您的应用的 json 消息指定一个键值对,例如
{
“状态”:“新更新”
}
在 GCMReceiver 的 onMessage() 中,您可以通过意图中的“状态”键获取消息并编写类似的逻辑
if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
如果您是 Sqlite 数据库的新手,请阅读本教程
http://www.vogella.com/articles/AndroidSQLite/article.html
考虑到你已经实现了他的 OpenHelper 类来更新数据库
MyOpenHelper myOpenHelper= new MyOpenHelper(this)
sqltitedatabaseObject=myOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(<your_column_name>,<value>);
// For Updating the Existing Entry
long rowAffected=sqltitedatabaseObject.updateWithOnConflict(<Table_Name>,
values,<Selection_For_Update>,<Selection_Paramans_In_String_Array>,
0);
// For Inserting a New Row
long rowsInserted=sqltitedatabaseObject.insert(<Table_Name>, null, values);
根据您的编辑,让我补充几点:
同步意味着保持两个数据相同,为了实现这一点,您必须创建一个 Web 服务,该服务将从您的数据库中获取数据(为插入数据库中的每个数据添加时间戳并将其与数据一起发送您正在发送到设备)。
同步数据时,从设备 sqlite 数据库中获取时间戳的最大值,并在从设备访问 Web 服务时作为参数发送,并从服务器发送数据作为响应,这些数据在特定之后添加或更新请求中收到的时间戳。
因此,即使用户删除了您的应用,您也不会在请求时间戳中得到任何信息,因此发送整个数据。