2012-08-28 2 views
6

별도의 클래스를 만들어 정적 데이터 변수로만 구성된 저장소로 사용하는 것은 좋지 않습니까?클래스를 사용하여 정적 데이터를 Java에 저장 하시겠습니까?

현재 Android 용 앱을 개발하고 있지만 Java에 대한 일반적인 질문입니다.

안드로이드의 경우 액티비티를 가로 질러 이동 중이며 별도의 클래스에 전역/정적 플래그/varibles를 저장하고 원하는 모든 액티비티에서 액세스 할 수 있습니다.

추신. 데이터는 세션 시간에만 필요합니다.

+0

나는이게 나쁜 생각이라고 생각하지 않습니다. –

+0

앱의 평생 동안 좋은 결정입니다. 장수명 저장 장치의 경우 은 sharedpreferences 또는 sqlite를 사용합니다. –

답변

6

글쎄, 그건 나쁘지 않습니다. 이러한 유형의 클래스는 Android에서 사용할 수 있습니다. 하지만 여기서 작은 수정. 정적 데이터를 보유하는 클래스를 유지 관리하는 대신 해당 클래스가 Application 클래스를 확장하고 데이터를 저장하도록 사용할 수 있습니다. 여기

은 예입니다,
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 
     } 
} 

그리고 당신의 활동에

는,

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

Taken from here..

을 이렇게 그리고 SharedPreference에 대해 얘기 만하면 값을 사용하는 것이 좋습니다 오랫동안 저장해야합니다. 그렇지 않다면 Application 클래스를 사용하고 합법적 인 방법 인 setter와 getter를 사용해야합니다.

+0

하나의 문제는 변수에 액세스하거나 수정할 때마다 캐스트를해야한다는 것입니다. 정적 메서드를 사용하는 정적 클래스/변수를 사용하면 배수 캐스팅이 절약되어 프로세스와 메모리가 절약됩니다. – Flawyte

+0

캐스팅 된 객체를 단독으로 저장하고 사용할 때마다 매번 캐스팅 할 필요가 없습니다. –

+0

새 변수를 추가 할 때마다 setter 및 getter를 만드는 것이 좋다고 생각합니다. 그러나 응용 프로그램 확장을 사용하여 이점을 살펴보아야합니다. –

5

SharedPreference를 사용하여 플래그 및 변수를 저장할 수 있습니다.

이 부분을보세요. Preference Demo.

+0

세션 시간 동안 만 필요하고 새로운 앱을 시작할 때마다 설정을 재설정하고 싶습니다. –

1

사용 SharedPreference :

은 링크를 참조

는 안드로이드 어플리케이션 클래스를 사용하는 것이 좋을 것이다 . 글로벌 애플리케이션 상태를 저장하려고합니다.

0

글쎄! 내가 아는 한 그것은 프로젝트의 크기에 달려 있습니다! 정적 인 데이터를 저장하기 위해 별도의 클래스를 사용하는 것이 상대적으로 큰 경우 (사용되는 정적 데이터의 유형에 따라 두 개 이상의 클래스를 유지해야 할 수도 있습니다)

1

" 절대로 "전역 변수를 사용하지 마십시오.b는 모든 매개 변수

환호를 가지고 Bundle b = getIntent().getExtras();

+2

질문은 활동의 데이터를 다른 활동으로 전달하는 것이 아니라 코드의 어느 곳에서든지 자연을 통해 데이터에 액세스하는 것입니다. – Flawyte

+0

게다가, 나는 Java에서 일반적으로 안드로이드를 예로 들었다. –

0

난 당신이해야한다고 제안 :

당신은 당신이 Intent.putExtras(Name_parameter, "value_parameter")

를 사용하여 일부 값을 던질 수 있고, 값을 받아 봐 다른 활동에 액세스하는 경우 전역 클래스를 Singleton 클래스로 캡슐화하십시오. Singleton Design Pattern

관련 문제