2012-08-28 15 views
6

Ayrı bir sınıf oluşturmanın ve onu yalnızca statik veri değişkenlerinden oluşan bir depolama alanı olarak kullanmak kötü bir fikir midir?Java'da statik verileri depolamak için bir sınıf mı kullanıyorsunuz?

Şu anda android için bir uygulama geliştiriyorum, ancak soru Java için genel.

Android'de, etkinlikler arasında dolaşıyorum ve bu sınıftaki bazı global/statik flag/varibles'leri depolamak ve istediğim herhangi bir aktiviteye erişebilmek istiyorum.

PS. Veriler sadece oturum süresi için gereklidir.

+0

Bence bu kötü bir fikir değil –

+0

Uygulamanızın ömrü boyunca iyi bir karar. Uzun ömürlü depolama için , paylaşımlı veya sqlite kullanın. –

cevap

6

depolamak anlamına gelir, bu kötü bir fikir değil. Android'de bu tür bir sınıfı kullanabilirsiniz. Ama burada küçük bir düzeltme. Statik Verileri tutan bir sınıfı korumak yerine, bu sınıfı Uygulama sınıfını genişletmek ve verileri depolamak için kullanabilirsiniz. İşte

bir örnektir,
public class HelloApplication extends Application { 
     private int globalVariable=1; 

     public int getGlobalVariable() { 
       return globalVariable; 
     } 

     public void setGlobalVariable(int globalVariable) { 
       this.globalVariable = globalVariable; 
     } 
     @Override 
     public void onCreate() { 
       //reinitialize variable 
     } 
} 

Ve Faaliyetinizdeki

,

(HelloApplication)getApplication()).setGlobalVariable(10); 
int valiable=((HelloApplication)getApplication()).getGlobalVariable(); 

Taken from here..

Bunun Ve SharedPreference söz, yalnızca zaman değeri bunları kullanmayı düşünmelisiniz uzun bir süre saklanmalıdır. Aksi takdirde, Uygulama sınıfını kullanmalı ve bunu yapmak için meşru yol olan ayarlayıcıları ve alıcıları kullanmalısınız.

+0

Bir problemin, bir değişkeni değiştirmek veya değiştirmek istediğiniz her zaman bir oyuncu kadrosu yapmak zorunda olduğunuzu düşünüyorum. Statik yöntemleri/değişkenleri olan statik bir sınıf kullanmak, çoklu komutları ve dolayısıyla işlem ve belleği kaydeder, değil mi? – Flawyte

+0

Her defasında dökümlü nesneyi tek başına depolarsak ve dışarıdan çıkarsak onu kullanmak gerekmez .. –

+0

Bu iyi bir fikir, ama yeni bir değişken eklediğimde setterler ve alıcılar oluşturmanın her zaman zahmetli olduğunu düşünüyorum. Ancak, Uygulama uzantısını kullanarak avantajlara bir göz atmalıyım. –

5

Bayrakları ve değişkenleri depolamak için SharedPreference özelliğini kullanabilirsiniz.

Bu Preference Demo'a bakın.

+0

Sadece bir oturum zamanı için ihtiyacım var ve her yeni uygulama lansmanında ayarın sıfırlanmasını istiyorum. –

1

kullanım SharedPreference:

Bağlantı bkz

o Android Uygulama sınıfı kullanmak daha iyi olurdu . Genel uygulama durumu

0

Peki! Bildiğim kadarıyla projenizin büyüklüğüne bağlı olabilir! Göreceli olarak büyükse, statik verileri depolamak için ayrı bir sınıf kullanmak iyi ise (sadece bir sınıf değil, kullanılan statik verilere bağlı olarak iki veya daha fazla dersi tutmanız gerekebilir)

1

bunu öneririm " asla "küresel değişkenler kullanmayın ....b tüm parametreleri

alkış vardır Bundle b = getIntent().getExtras();,

+2

Soru, bir etkinlikten diğerine veri iletmekle ilgili değil, kodun herhangi bir yerinden doğası ne olursa olsun verilere erişmekle ilgilidir. – Flawyte

+0

Ayrıca, genellikle Android'de Android'den bahsetmiştim. –

0

Dilemelisin öneririm:

Eğer Intent.putExtras(Name_parameter, "value_parameter")

kullanarak bazı değerleri atabilir ve değer recive başka bir etkinliğe erişirken Küresel sınıfınızı bir Singleton sınıfı ile kapsülleyebilirsiniz. Daha fazla bilgi için bkz. Singleton Design Pattern

İlgili konular