언어/Andorid

[ANDROID] 전역 변수 예제 만들기, 활용

벨포트조던 2020. 7. 27.
반응형

목표 : 안드로이드 액티비티 외에 다른곳에서 저장한 값들을 사용하기 위해 활용함. ( 액티비티 이외에 다른곳에서는 context를 사용하기 힘들어서 )

다른더 좋은방법이 있으면 추천해주시면 감사함~!

 

 

 

 

안드로이드에서 Activity간 상관없는 전역 변수를 만드는 방법을 살펴보자.

크게 두 가지 방법이 있는데,

1. android.app.Application을 이용하는 방법

2. Singleton 디자인 패턴을 이용하는 방법


Activity에서 접근해야한다면 전자를 사용하는 것이 낫고, 그 외의 Provider나 다른 곳에서 접근해야하는 데이터면 후자가 나을것이다. 하지만 후자의 경우 메모리가 모자라면 static 변수들을 메모리에서 제거할 것이다. 이런 경우 onSaveInstatnceState(Bundle) 을 통해서 싱글콘을 따로 저장시켜야하는 추가 작업이 필요하다.



1. Android.app.Application을 이용하는 방법

1) Application을 상속받는 클래스를 만든다. (예제는 ProjectCampusApplication 클래스)

public class ProjectCampusApplication extends Application{
  private String data;
  public String getData()
  {
    return data;
  }
  public void setData(String data)
  {
    this.data = data;
  }


2) Android manifest xml파일에 Application을 위의 어플리케이션을 설정한다.

- Manifest editor로 보면 아래의 Application Attributes > Name을 설정하면 된다.
(화면은 ProjectCampusApplication으로 설정한 화면)



(xml을 텍스트로 보면 아래와 같이 된다)

<application android:name="ProjectCampusApplication" .....


3) Activity 안에서 변수를 가져온다.

//set
((ProjectCampusApplication)this.getApplication()).setData("foo");

//get
String s =  ((ProjectCampusApplication)this.getApplication()).getData();

 


 
2. Singleton 디자인 패턴을 이용하는 방법

 1) 싱글톤을 패턴으로 클래스를 만든다. 

public class MyGlobals {
  private String data;
  public String getData()
  {
    return data;
  }
  public void setData(String data)
  {
    this.data = data;
  }
  private static MyGlobals instance = null;

  public static synchronized MyGlobals getInstance(){
    if(null == instance){
      instance = new MyGlobals();
    }
    return instance;
  }


 


2) 싱글콘 객체 안에서 변수를 가져온다.

//set
MyGlobals.getInstance().setData("foo");

//get
String s =  MyGlobals.getInstance().getData();

 



끝.

출처: https://unikys.tistory.com/194 [All-round programmer]

반응형

댓글