2013-08-09 22 views
7

Bir senaryo sahibiyim ve nereye gideceğimi bilmiyorum.Asynctask Fragment veya Ebeveyn Etkinliği?

Senaryo

uygulaması çeşitli parçalarını görüntüleyen bir Ana faaliyeti vardır. Fragmanlardaki veriler, web'den veya yerel bir veritabanından gelebilir ve bir asenkronizasyon kullanılarak alınır.

  1. parçasına geçmesi sonucunu fragment.newInstance(parameters) kullanmak ardından üst aktivitesinde Asynctask koyun ve:

    Gördüğüm kadarıyla

    , ben 2 alternatifin var. Ancak, asenkronizasyonumda, ilerlemeyi veya parçadaki bazı bilgileri güncellemem gerekiyorsa, her defasında yeni parametre kümesiyle yeni bir İşlevi çağırmak zorunda kalacağım.

  2. Fragmanı ekleyin ve asenkronizasyonu içine yerleştirin, bu şekilde ilerlemeye ihtiyaç duyulduğunda, sözdizimi bittiğinde, fragmanların görünümlerini güncelleyebilirim, ancak sözdizimi bittiğinde, listeyi bilgi.

Doğru yaklaşım ne olurdu?

LE: aslında ben ana faaliyeti

cevap

0

Ben ikinci yaklaşım ile gider içinde findFragmentById ile bulduktan sonra ben veridiliminin genel yöntemleri çağırabilir fragman güncellemek için noktası 1 için.
Asıl nedenim AsyncTask çalışırken ekran yöneliminde meydana gelebilecek sorunlardan kaçınmak olurdu.

+0

Cevabınız için teşekkür ederiz. Ve uygulama sadece dikey yönelime sahipse? – Alin

+1

Güncellenmesi gereken görünümlerin Fragmentte bildirilmiş olması durumunda, AsyncTask'ı da parçaya ayırmak mantıklıdır. "İlişkili şeyleri bir arada tut". –

+0

Aslında, AsyncTask'ı gerçekten parça halinde bildirmeniz gerekmez, bunu kendi dosyasında ilan edebilirsiniz, ancak fikir parçanın içinden başlatılmalıdır. –

0

Yöntem 2 ile giderdim, ancak bir adım daha ileriye.

Eşzamansız görevinizi yürütmek için ayrı bir parçanız var. Bu sayede, herhangi bir sorun olmadan tüm konfigürasyon değişikliklerini (sadece döner ekranı değil) yapabilirsiniz.

Başka bir parçada, verileri görüntüleyebilirsiniz. Verileri, asenkronizasyon görev parçanızdan geri aramalar aracılığıyla etkinliğe geçirebilir ve etkinliğin verileri güncellemek için görüntüleme parçasında bir yöntemi çağırmasını sağlayabilirsiniz.