2014-07-16 20 views
12

En kötü belgelenen konular listesinde SyncAdapter'ın elmas gibi parıldadığı iyi bilinir. http://udinic.wordpress.com/2013/07/24/write-your-own-android-sync-adapter/ SyncAdapter acording 4 ana faydalar getirir: A) Pil verimliliği B) Arayüz C) İçerik farkındalığı D) Tekrar dene mekanizması; başka hangi alternatiflerSyncAdapter alternatifleri

her durumda uzak SQL DB ile bir sqlite DB senkronize etmek için bir ihtiyaç olup olmadığı konusunda ve bu faydaların hiçbiri gereklidir, orada **? ** onun bir hizmeti yönetmek kolay - php ile DB'ler arasında, senkronizasyon sürecinin bir kısmını yüklemek için bunu yaptım, ama indirme bölümü için sorgu doldurma yöntemini kullanırsam aptalca hissederim, yakın gelecekte uzaktaki db neden büyük ve büyük olabilir. aklımda kendi senkronizasyon aktivitemi/servisimi yazmak, ancak SQLite db/table'a (her tabloda bir _date belirtmek dışında) son güncelleme tarihine nasıl erişileceğini bilmiyorum, tekrar senkronizasyonun gerekli olup olmadığını kontrol etmek için? Kafamın iki yer arasında olduğunu hissediyorum!

cevap

1

Sorunu karıştırıyorsunuz. 1- Gerçekten senkronizasyon adaptörü kullanmak zorunda mısınız ??? Dolayısıyla, evetse, her bir tablo için bir Senkronizasyon Çağrısı olacak ve son çağrı tarihini kaydetmeniz gerekmeyecek. Android sizin için yapacaktır. Sadece senkronizasyon zamanlayıcılarınızı doğru şekilde ayarlayınız 2-Diğer çözüm basit bir AsyncTask yapmak ve işinizi burada yapmaktır. (Haftada sadece bir kez yapmanız gerekiyorsa, örnek için)

Tarih sorununuz için, gerçekten güncel olup olmadığınızı bilmek isteyip istemediğinizi sorun. Sunucunuzda tarihi kaydedin veya bir sürümü artırıp eşitlemeniz gerekip gerekmediğini öğrenmek için cihazınızdan bir senkronizasyon çağırdığınızda bunları karşılaştırın. Başka bir çözüm de sadece db'nizi güncellendiğinde veya değilken yenilemenizdir (örneğin, küçük bir db'niz var, dolayısıyla optimize edilmiş bir sistem oluşturmanıza gerek yok).

Aylar önce aynı problemle karşılaştım ve bunun size yardımcı olmasını umuyordum.

1

Bu makale dikkate almak isteyebilirsiniz:

https://www.bignerdranch.com/blog/choosing-the-right-background-scheduler-in-android/

Bu SyncAdapter az elverişli seçenekler sonucunda iyi bir seçimdir açıkça nasıl yapar iyi pil kullanmak ve çıkmak gerek zaman ağ.

ben tezler nedenlerle Asyntask önermiyoruz: http://blog.danlew.net/2014/06/21/the-hidden-pitfalls-of-asynctask/

gerçekten sizin için çalışmıyor SyncAdapter uzun yaparken kısmi uyanıklık kilit ile bir IntentService ve WakefulBroadcastReceiver kullanmayı önerir androidin en iyi uygulamalar varsa operasyonlar "Android çerçevesi, işlemleri arka planda çalışan ayrı bir iş parçacığına yüklemenize yardımcı olan çeşitli sınıflar sunuyor. Bunlardan en yararlı olanı, IntentService'dir." onlar yazmış beri https://developer.android.com/training/run-background-service/index.html https://developer.android.com/training/scheduling/wakelock.html

bunun gerçeklik payı olmalı.