Tôi vừa tạo Tài khoản cho ứng dụng của mình.SyncAdapter: Tài khoản được tạo, requestSync OK, nhưng setSyncAutomatically không hoạt động
- Các tài khoản là có thể nhìn thấy trong cài đặt
- tôi đặt syncable = "true" trong XML của tôi
- tôi có thể thực hiện một đồng bộ thủ công bằng cách nhấn vào cài đặt -> onPerformSync được gọi
- tôi có thể thực hiện đồng bộ hóa "mã" bằng cách gọi ContentResolver.requestSync -> onPerformSync được gọi là
- Và tất nhiên, có, đồng bộ hóa được bật trong cài đặt. Tôi không sử dụng bất kỳ tiết kiệm điện.
Tôi cũng theo tất cả các bước từ đây: https://stackoverflow.com/a/5255360/327402
Đây là mã của tôi để có được sự đồng bộ hóa theo mã
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccountsByType(ACCOUNT);
//Log.e("DEBUG", "Accounts: " + accounts.length);
if (accounts.length == 0) {
Account account = new Account(getString(R.string.app_name), ACCOUNT);
ContentResolver.setIsSyncable(account, AUTHORITY, 1);
ContentResolver.addPeriodicSync(account, AUTHORITY, new Bundle(), 7200);
ContentResolver.setSyncAutomatically(account, AUTHORITY, true);
if (am.addAccountExplicitly(account, "pass1", null))
Log.i("DEBUG", "account Created: " + account.name + ", " + account.type);
else
Log.i("DEBUG", "addAccountExplicitly returned false");
}
else{
ContentResolver.requestSync(accounts[0], AUTHORITY, new Bundle());// THIS IS WORKING!!!
}
}
Vì vậy, tất cả mọi thứ có vẻ đúng và tốt.
Nhưng rất tiếc, tôi không thể đồng bộ hóa định kỳ! Khi tôi mở cài đặt, tài khoản, tôi thấy tài khoản và ngày và thời gian là lúc tôi thực hiện đồng bộ hóa theo mã hoặc theo cách thủ công.
Bất kỳ ý tưởng nào về những gì tôi đã làm sai hoặc những gì tôi đã quên?
Bạn biết rằng pollFrequency tối thiểu kỳ đồng bộ là 1h – Selvin
Vâng, đó là lý do tại sao tôi đã sử dụng 2 giờ trong mã của tôi, như bạn có thể thấy ... :-D –
Quá trình thiết lập đồng bộ hóa này có thể gây phiền toái. Thử thiết lập tài khoản của bạn trước khi thiết lập đồng bộ hóa định kỳ của bạn. Hiện tại, bạn đã thiết lập đồng bộ hóa định kỳ, sau đó là tài khoản của bạn nếu tôi đọc mã của bạn chính xác. – Cheticamp