SyncAdapter etkin bir şekilde web'e içerik senkronize ederken ActionBar'da bir ProgressBar göstermek istiyorum.SyncAdapter animasyonu çalıştırma - SyncAdapter etkin olarak senkronize edip etmediğini nasıl bileceğiniz
SyncStatusObserver'u ContentProvider.addStatusChangeListener ile birlikte kullanmayı denedim. Ancak, bir SyncAdapter'ın aktif olarak çalışıp çalışmadığını kontrol edemiyorum. Ben sadece kontrol edebilirsiniz:
- SyncAdapter ContentResolver.isSyncPending
- kullanarak beklemede SyncAdapter beklemede VEYA aktif kombine edilebilir ContentResolver.isSyncActive
Bu bayraklar kullanarak çalışma: Bir SyncAdapter kontrol etmek o kadar mümkün olduğunu !isSyncPending && isSyncActive
aktif olarak çalışıyor ve bekleyen herhangi bir işi yok. Ancak, bazı durumlarda SyncAdapter aktif olarak çalışır VE bunu bekleyen ikinci bir bekleyen istek var.
Çok basit görünüyor, ancak bu soruna bir çözüm bulamıyorum. SyncAdapter çalışmadığında ProgressBar'ın görünür olması, kullanıcılara senkronizasyonun çok yavaş olduğu izlenimini veriyor. ProgressBar'ı göstermemek, kullanıcının hiçbir şey olmadığını düşünmesini sağlar.
Yukarıdaki koddaki çözüm aşağıda gösterilmiştir. Biz activity.onResume gözlemciyi kayıt: Sonunda soruna bir çözüm bulduk
syncObserver = new SyncStatusObserver()
{
@Override
public void onStatusChanged(int which)
{
Account account = getSomeAccount();
boolean syncActive = ContentResolver.isSyncActive(account, CONTENT_AUTHORITY);
boolean syncPending = ContentResolver.isSyncPending(account, CONTENT_AUTHORITY);
boolean isSynchronizing = syncActive && !syncPending;
updateRefreshButtonState();
}
}
Eclair, Froyo, Gingerbread için, yukarıdaki çözüm yalnızca aygıtın yalnızca bir hesabı varsa çalışır. Bir cihazda birden fazla hesap varsa, ilk hesap yalnızca senkronize edilir; gerisi yok sayılır. – ChuongPham