8

Ứng dụng của tôi cho phép mọi người sử dụng và quản lý dữ liệu của họ bất kể họ đã đăng nhập. Mặc dù, khi tôi xác định duy nhất từng thiết bị, tôi muốn đồng bộ hóa dữ liệu từ người dùng ẩn danh của tôi tốt. Vì vậy, tôi đã tự hỏi nếu nó là một thực hành tốt để tạo một tài khoản vô danh trong trường hợp này, kể từ SyncAdapters chỉ làm việc với các tài khoản.Sử dụng SyncAdapter mà không cần tạo tài khoản

Tôi có nên tạo tài khoản cho người dùng ẩn danh của mình hoặc tôi có nên đồng bộ hóa dữ liệu của họ với chủ đề/AsyncTasks/Trình tải không? Cụ thể, có cách nào để làm cho ContentResolver.requestSync() hoạt động mà không cần tài khoản không?

+1

Tôi khuyên bạn nên sử dụng cùng một quy trình đồng bộ hóa cho cả người dùng được xác thực và ẩn danh. requestSync yêu cầu một tài khoản. Nếu bạn muốn sử dụng, hãy tạo một tài khoản ẩn danh. – njzk2

Trả lời

5

Sử dụng SyncAdapter/AccountManager trong Android thực sự là rắc rối nhiều hơn giá trị của nó. Mẫu cụ thể đó chỉ được sử dụng tốt nhất khi bạn mong đợi một số lượng lớn các ứng dụng khác muốn chia sẻ dữ liệu tài khoản của bạn (ví dụ: Twitter hoặc Facebook).

Tôi khuyên bạn chỉ cần viết nền thực hiện của riêng bạn Service để thực hiện đồng bộ hóa. Bạn có thể sử dụng AlarmManager để thông báo cho dịch vụ đồng bộ hóa định kỳ. Nếu không, bạn có thể chỉ cần đồng bộ hóa khi người dùng mở ứng dụng của bạn bằng cách sử dụng số AsyncTask cơ bản.

+0

+1 Tôi thấy mô hình hạn chế hơn hữu ích. –

+0

Tôi có thể tin rằng việc sử dụng SyncAdapter/AccountManager gây rắc rối nhiều hơn nó nên xem xét một nhiệm vụ chung là lưu trữ bộ nhớ đệm của tài nguyên máy chủ nào đó .... nhưng thực sự rắc rối hơn là viết Dịch vụ của riêng bạn? –