티스토리 뷰
싱글톤(Singleton) 이란?
싱글톤은 딱 하나의 인스턴스만 생성할 수 있는 클래스다. 때문에 싱글톤은 앱이 메모리에 있는 한 계속 존재한다.
이러한 특징으로 인해 데이터를 싱글톤으로 관리할 경우 앱의 생명주기동안 고유한 데이터 사용을 보장할 수 있다.
하지만 Android OS가 Application을 메모리에서 제거할 때 같이 소멸되기 때문에 장기간 데이터 보존을 위한 솔루션은 아니다.
(장기간 데이터 보존을 위한 솔루션으로는 SQLite, 서버 통신 등이 있다)
(장기간 데이터 보존을 위한 솔루션으로는 SQLite, 서버 통신 등이 있다)
싱글톤의 특징
- 자기 자신을 저장하기 위한 static object를 갖는다.
- private 생성자를 갖는다.
- 인스턴스 반환을 위한 get 메서드를 갖는다.
만약 자신의 인스턴스가 있다면 get 메서드를 통해 기존 인스턴스를 반환한고, 반대의 경우에는 생성자를 호출하여 새로운 인스턴스를 반환한다.
private static MySingleTone mSingleTone;
public MySingleTone get(Context context) {
if(mSingleTone == null) {
return new MySingleTone(context);
} else {
return mSingleTone
}
}
이러한 특징으로 인해 싱글톤은 메모리에 오직 하나의 인스턴스만 존재하게 된다.
싱글톤 예제
아래와 같이 학생 정보를 저장하는 Model Class인 Student가 있다고 가정하자.
public class Student { private UUID mId; private String mName; private String mGender; public Student(String name, String gender) { mName = name; mGender = gender; } public UUID getmId() { return mId; } public void setmId(UUID mId) { this.mId = mId; } public String getmName() { return mName; } public void setmName(String mName) { this.mName = mName; } public String getmGender() { return mGender; } public void setmGender(String mGender) { this.mGender = mGender; } }
이러한 데이터는 싱글톤을 통해 관리될 수 있다.
public class StudentLab { private static StudentLab sStudentLab; private List<Student> mStudents; public static StudentLab get(Context context) { if (sStudentLab == null) { return new StudentLab(context); } else { return sStudentLab; } } private StudentLab(Context context) { mStudents = new ArrayList<>(); } public List<Student> getStudents() { return mStudents; } }
위와같이 싱글톤을 통한 데이터 관리는 불필요한 메모리 낭비를 피할 뿐만 아니라 액티비티 생명주기 안에서 고유한 데이터 사용을 보장한다.
또한 싱글톤은 ListView 데이터를 관리할 때 유용하다.
'Programming > Android' 카테고리의 다른 글
Android :: 권한(Permission) 파헤치기 / 개념과 활용방법 / 실시간 권한얻기 (5) | 2020.03.22 |
---|---|
Android Studio :: 안드로이드 스튜디오 실행 시 자동 프로젝트 열기 방지 / Welcome Page 보기 (2) | 2020.02.17 |
Android Studio :: Code 엔트로피를 한 눈에! CodeGlance / Sublime같은 코드 맵 플러그인 (0) | 2020.02.10 |
Android :: 안드로이드 :: illegal character u2028 에러 해결방법 (0) | 2016.05.31 |
Android :: 안드로이드 :: 가이드라인 텍스트 크기 (0) | 2015.11.10 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- compose bottomsheet
- 컴포즈 바텀시트
- 개발자
- 코틀린
- 영어회화
- 프로그래밍
- 런탭
- php
- Programming
- android studio
- 코딩문제
- live template
- 코딩
- 안드로이드 스튜디오 라이브 템플릿
- 코틀린 기초강의
- 자바
- kotlin 기초
- 문제풀이
- 안스 템플릿
- 영어발음
- 안드로이드 컴포즈
- 코틀린 기초
- 프로젝트오일러
- 안드로이드 바텀시트
- Android
- 안드로이드 스튜디오
- LiveTemplate
- Kotlin
- Java
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함