Máy chủ GCM không chịu trách nhiệm cập nhật cơ sở dữ liệu của bạn, bạn có thể sử dụng nó chỉ để tạo cơ sở dữ liệu cho ứng dụng của mình, yo! có một cái gì đó mới trên máy chủ của tôi để cập nhật, cho phép kết nối và tải xuống dữ liệu mới. Nó tiết kiệm rất nhiều pin của thiết bị mà bạn sẽ lãng phí khi gộp máy chủ của mình vào một số thời gian xác định nội bộ để kiểm tra tính khả dụng của bản cập nhật.
Bạn có thể chỉ định khóa-giá trị cho tin nhắn json mà bạn đang gửi tới ứng dụng của mình từ GCM như
{"status":"newupdate"}
và trong onMessage () của GCMReceiver, bạn có thể nhận thông báo theo khóa "trạng thái" từ mục đích và viết logic như
if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
Hãy xem hướng dẫn này nếu bạn chưa quen với Cơ sở dữ liệu Sqlitehttp://www.vogella.com/articles/AndroidSQLite/article.html
Để cập nhật cơ sở dữ liệu coi như bạn đã triển khai lớp 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);
Theo Chỉnh sửa của bạn, hãy để tôi thêm một vài điểm:
-
Đồng bộ hóa có nghĩa là giữ cho cả hai dữ liệu giống nhau và để đạt được điều này, bạn phải tạo một dịch vụ web để tìm nạp dữ liệu từ cơ sở dữ liệu của bạn (thêm dấu thời gian cho mỗi dữ liệu được chèn vào cơ sở dữ liệu và gửi nó cùng với dữ liệu bạn đang gửi đến thiết bị) .
-
Trong khi đồng bộ hóa dữ liệu, tìm nạp giá trị tối đa của dấu thời gian từ cơ sở dữ liệu sqlite của thiết bị và gửi dưới dạng tham số trong khi truy cập dịch vụ web từ thiết bị và gửi dữ liệu phản hồi từ máy chủ được thêm vào hoặc cập nhật sau dấu thời gian cụ thể đó nhận được yêu cầu .
Vì vậy, ngay cả khi người dùng đã xóa ứng dụng của bạn, bạn sẽ không nhận được gì khi yêu cầu tem thời gian gửi toàn bộ dữ liệu.