목표 : 안드로이드 액티비티 외에 다른곳에서 저장한 값들을 사용하기 위해 활용함. ( 액티비티 이외에 다른곳에서는 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]
'언어 > Andorid' 카테고리의 다른 글
[android] AMD CPU에서 android emulator 설치시 오류 (0) | 2020.09.25 |
---|---|
[material design] 커스텀 버튼, edittext 적용하기 (0) | 2020.07.31 |
[material design] 커스텀 버튼, edittext 적용하기 (0) | 2020.07.31 |
안드로이드 1분 주기, 특정 주기로 계속 동작. 스케줄러, Quartz 같은 효과 방법 (0) | 2020.07.27 |
댓글