2012-04-04 14 views
7

Mevcut bir Android projesinde, birkaç etkinlik arasında veri aktarıyorum. Etkinlikler arasında veri göndermenin en iyi yolu olup olmadığını merak ettim. Bir etkinliğin sonuçlarına göre güncellenecek/eklenecek bir dize var, daha sonra bir Facebook paylaşımında daha sonra iki etkinlik paylaşıyorum. Bu dize global bir statik dize olarak ayarlanmalı mı, paylaşılmalı mı yoksa intent.PutExtra'u kullanarak dizeyi mi iletmeliyim?Android: Daha iyi bir uygulama, global bir dize veya fazladan veriler içeren hedefler kullanıyor?

Genel dize muhtemelen daha az kod, ancak başka bir statik değişken anlamına gelir. Alternatif olarak, Ek'in amacı gayet iyi, ancak birkaç etkinlikten geçtiği için tekrar eden gibi görünüyor. Her iki durumda da işe yarayacak, sadece birinin diğerinin üstünde olup olmadığını bilmek istersiniz.

cevap

6

Benim görüşüme göre yalnızca Niyet işe yarayacak. Android'de uygulamanızın öldürüldüğü etkinliğe göre hazırlanması gerekir (örneğin, gelen bir video görüşmesi arka plana yerleştirir ve ayrıca arka plan uygulamalarının öldürülmesi için çok fazla bellek tüketir). Android, uygulamanızı geri yüklediğinde, gösterilen etkinliği yeniden başlatır ve başlatan Niyeti yeniden gönderir, çünkü bunlar kalıcı depolamaya kaydedilir. Ancak diğer sınıfların durumu (statik değişkenleri dahil) kaydedilmez ve onları kaydetmezseniz, kaybolur/sıfırlanır.

+0

Teşekkür ederiz! Bu çizgiler boyunca bir şey olduğunu hissetmiştim. –

4

Genel değişkenleri kullanmaktan her zaman kaçınmalısınız. Bazen onlara ihtiyacınız olacak ve çoğu durumda bu bir tasarım sorunu nedeniyle geliyor. Global değişkenleri "daha az kod nedeniyle" veya daha kolay kodlama kullanmamalısınız. BTW, sadece sabitlere değil, genel statik değişkenlere aittir. Küresel değişkenler

  • Harder kim değiştirir? Kim değişkeni okur (test etmek için (burada o değişkeni "kapsam" dışarı from..it 's geliyor) nedeniyle

    • Kodunuz okumak zordur zor hayat kurmak değişken?)
    • yok erişim denetimi (hiçbir alıcı/ayarlayıcı)
    • Threading ve birçok ekstra verilerle daha
  • +0

    Sanırım niyetlerle gideceğim. Teşekkür ederim! –

    0

    niyet fazla. getExtras üzerinde geçmek için daha iyi ve ebeveyn etkinliğiniz, çocuk etkinliği bittiğinde izleme için önceden tanımlanmış etkinliklere sahiptir.

    İlgili konular