Birkaç web hizmetine erişen ve bilgilerin görüntülendiği birden çok etkinliğe sahip uygulamalar için en iyi genel tasarımın ne olduğunu anlamaya çalışıyorum.Genel uygulama tasarımı (IntentService/ContentProvider/AsyncTask)
En son Android uygulamamı uyguladığım yol aşağıdaki gibidir. Web hizmetlerinden bilgi almak için etkinliklerden gelen istekleri alan bir IntentService
var. Benim Service
, ResultReceiver
aracılığıyla isteğin durumu hakkında bildirir (başlatılmış/hata/bitmiş). Web servisini çağırdıktan sonra (xml/json) sonucu alıp ayrıştırdıktan sonra, bu bilgiyi ContentProvider
(sqlite veritabanıyla yedeklenmiş) olarak koydum ve değişikliklerle ilgili herhangi bir aktiviteyi bildirmek için ContentResolver
kullanın. Faaliyetler değişikliklerle ilgili olarak bilgilendirilir (bazılarının kullanımı ContentObserver
ve diğerleri SimpleCursorAdapter
s kullanır ve otomatik olarak bildirilir).
Şimdi benim yaklaşımla sorunlar:
- Ben bir etkinlik girmek her zaman, yukarıda açıklanan yöntemle web hizmetinden bilgi talep ve ben ile doldurmak, o belirli tablodaki tüm satırları silmek yeni bilgi ve aktiviteyi bildir. Yani, eğer kullanıcı geri basar ve tekrar girerse, tekrar bütün dansı yaparım. Veritabanına, son güncellenen vb. Için bazı alanlar eklemem gerektiğini düşünüyorum ama bununla nasıl devam edeceğimi bilmiyorum. Öneriler? Bir alternatifin alarmları kullanmak ve belirli aralıklarla güncellemeleri tetiklemek olduğunu düşünüyorum. Ama benim durumumda, şartname, aktiviteye her girişimde web servisini kontrol etmeyi ister.
- Web hizmetini aradığımda, diğer görünümler üzerinde (daha önce getirilen bilgileri içeren ve web hizmet çağrısı bitinceye kadar veritabanında bulunan), etkinlikte belirsiz bir ilerleme çubuğu gösteriyorum ancak kullanıcı etkileşime geçebilir. görünümleri ile ve bu iyi değil (bilgi veritabanından kaybolabilir). Etkileşimi devre dışı bırakmanın herhangi bir yolu var mı? Bir ProgressDialog akla geliyor.
- Farklı etkinliklerle hızlı bir şekilde hareket edersem, IntentService önceki web servis çağrılarıyla engellenir ve en son web servis çağrısı almak daha uzun sürer. Her web hizmeti için birden fazla
IntentService
oluşturabilirim ama bunun amacı olduğunu sanmıyorum.
Aldığım yaklaşımın, bu özel uygulama için gerçekten en iyisi olmadığını hissediyorum. Google I/O uygulamasından ilham alan kısmen (güncelleştirilmiş sqlite alanları vb. Gibi her şeyi anlayamadım). Bir alternatif, tüm aktivitelerde AsyncTasks kullanmaktı. Ancak diğer etkinliklerden erişilebilmesi için bilgileri nerede saklayabilirim? Application
listelerinde? Ve kimlik yönetimi hakkında ne dersiniz?
Görüşleriniz/fikirleriniz/önerilerinizle gerçekten ilgileniyorum ve sonraki uygulamalarımın daha iyi ve daha verimli çalışmasını nasıl sağlayabilirim.
Peki, sunumu daha önce gördüm ve gelişirken etkilendim. Ama ben hiç gitmedim çünkü kendimi yeterince güvende hissetmedim. Yaklaşımla ilgili daha fazla uygulama detayını görebilseydim yardımcı olurdu. Diğer açık kaynaklı Android uygulamalarını önerebilir misiniz? Teşekkürler. –
Bunu da sıfırdan yeniden düzenlemek zorunda kaldım çünkü açık kaynak örnekleri bulamadım. Oldukça kötü onlar hakkında konuştuklarından örnekler vermezler ... – fedepaol