Nó phụ thuộc rất nhiều vào loại đồng bộ hóa bạn cần.
Định kỳ
Nếu ứng dụng của bạn là một ứng dụng tin tức xuất bản bài đăng vào một thời điểm nhất định mỗi ngày (giả sử vào lúc 7,45 sáng mỗi ngày), thì bạn sẽ chạy một nhiệm vụ định kỳ trong dịch vụ nền, nói vào lúc 8 giờ sáng.
vd : nhỏ giọt. Họ thông báo cho tôi mỗi ngày một lần (khoảng 6h30). Tôi tin rằng họ sử dụng một nhiệm vụ định kỳ.
Sự kiện đã được bắt đầu
Nếu việc truyền dữ liệu của bạn được kích hoạt bởi hành động của người dùng, thì hãy sử dụng dịch vụ nền hoặc AsyncTask để truyền dữ liệu.
ví dụ : DropBox / Evernote. Chúng đồng bộ khi tôi tương tác với ứng dụng.
Tức thời
Nếu ứng dụng của bạn chạy tin nhắn tức thời / thư / cập nhật quan trọng không định kỳ , thì bạn cần thông báo đẩy, vì bạn muốn cảnh báo người dùng ngay lập tức. Sử dụng GCM hoặc Parse cho trường hợp này. ví dụ: trò chuyện WhatsApp / Google. Vì bạn đã đề cập rõ ràng rằng bạn không muốn sử dụng GCM, tôi sẽ cho biết lý do tại sao bạn nên sử dụng nhà cung cấp thông báo đẩy tiêu chuẩn thay vì viết riêng:
Thông báo đẩy hoạt động tức thời - có rất ít độ trễ (theo thứ tự giây, hiếm khi là vài phút). Nếu bạn thực hiện giải pháp / thư viện của riêng mình để thực hiện việc này - trong một mô hình ngây thơ, bạn sẽ ping máy chủ mỗi giây hoặc 5 giây hoặc một phút để kiểm tra trạng thái. Điều này rất không hiệu quả vì nó tiêu thụ CPU (và do đó là pin), băng thông trên điện thoại di động và tải trên máy chủ của bạn. Tuy nhiên, trong GCM / Parse, họ luôn giữ một cổng mở với máy chủ (xem tại đây ). Đây là cách tiêu chuẩn và hiệu quả nhất. Ngoài ra, nếu 10 ứng dụng sử dụng GCM, bạn không cần 10 kết nối mở, bạn chỉ cần một kết nối cho mỗi thiết bị. Và bạn thực sự không muốn phát triển giải pháp của riêng mình trừ khi bạn có lý do / tiền / thời gian hợp lệ để làm việc đó.
Một lưu ý về Bộ điều hợp đồng bộ : Bộ điều hợp đồng bộ hoạt động tốt cho cả ba trường hợp trên. Kiểm tra Chạy Bộ điều hợp đồng bộ hóa và bạn sẽ thấy rằng nó phụ thuộc vào GCM hoặc cơ chế của riêng bạn (trình kích hoạt sự kiện hoặc giải pháp tùy chỉnh) hoặc tính khả dụng của mạng (trình kích hoạt sự kiện) hoặc sự kiện định kỳ. Nói chung, đây là một lớp thuận tiện tốt để đồng bộ hóa dữ liệu mà không phải thực hiện một danh sách dài các khởi tạo mỗi lần hoặc để thực hiện tất cả các trường hợp trên tại một nơi.