Đồng bộ dữ liệu giữa client android và webservice

Mình muốn xây dựng 1 ứng dụng android có gửi dữ liệu lên webservice.
Sự kiện để up dữ liệu lên là: Mỗi khi dữ liệu được sinh ra thì nó sẻ thực hiện up lên webservice ngay.
Vấn đề là:

  • Trước khi cài đặt app thì dữ liệu người dùng đã có trước đó rồi -> up đống này lên
  • Khi đã cài app - Có internet -> dữ liệu mới 1 row -> up lên (trường hợp 2 thì lần trước nó không có internet)
  • Khi đã cài app - không có internet -> Thì làm như thế nào à, để lần sau không phải đẩy all toàn bộ cái đống đã đưa lên từ trước?

mình có làm là khi thực hiện gửi dữ liệu là gửi lên service hết -> như thế này dữ liệu sinh ra nhiều lại gửi nhiều request, mà dữ liệu lớn nữa thì không tốt lắm.
Mọi người có giải pháp gì giúp mình với.
Thanks :smiley:

Cái nào đã gửi lên server rồi thì mình đánh dấu là đã gửi, lần sau mình chỉ gửi dữ liệu mới thôi chứ. Sao lại gửi toàn bộ lên lại vậy?

1 Like

dữ liệu đó không lưu trong app của em á anh

Nếu dữ liệu đó là mới và buộc phải up lên thì phải up thôi :smile: Vấn đề Nam đang bị là dữ liệu lớn quá hay sao?

Nếu lớn quá thì mình tách nhỏ ra rồi up lên dần dần?

1 Like

dạ anh. dữ liệu lớn mà chưa biết tốc độ mạng như thế nào nữa.
với lại cái sự kiện up lên là khi 1 dữ liệu được sinh ra. mà 2 dữ liệu được sinh ra gần nhau, nó up cục này rồi đến cục kia, lỡ có nhiều hơn 2 dữ liệu được sinh ra thì không biết như nào

Em tạo một cái queue đánh dấu từng cục dữ liệu như vậy. Rồi dùng một thread kiểm tra dữ liệu mới định kỳ. Nếu thấy queue có dữ liệu thì up một cục lên, khi up thành công thì remove cái cục dữ liệu đó ra khỏi queue.

Sau đó lại chạy kiểm tra tiếp coi thử queue có dữ liệu hay không.

Cách làm này là mình có một thread chạy kiểm tra thường xuyên, có dữ liệu thì chỉ up 1 cục lên, khi kiểm tra dữ liệu up xong thì mới remove dữ liệu khỏi queue và up gói khác lên.

2 Likes

dạ a, để em tìm hiểu xem

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?