이 튜토리얼에서는 싱글톤(Singleton) 클래스를 활용하여 Android 애플리케이션에서 전역 변수를 선언하고 사용하는 방법을 단계별로 알아봅니다. 싱글톤 패턴은 앱 전체에서 하나의 인스턴스만 존재하도록 보장하므로, 여러 액티비티 간에 데이터를 공유할 때 매우 유용합니다.
1단계: 새 프로젝트 생성
Android Studio에서 File → New Project를 선택하고, 새 프로젝트 생성에 필요한 모든 세부 정보를 입력하여 새 프로젝트를 만듭니다.
2단계: 레이아웃 파일 작성
res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:app = "https://schemas.android.com/apk/res-auto"
xmlns:tools = "https://schemas.android.com/tools"
android:layout_width = "match_parent"
android:gravity = "center"
android:layout_height = "match_parent"
tools:context = ".MainActivity"
android:orientation = "vertical">
<TextView
android:id = "@+id/actionEvent"
android:textSize = "40sp"
android:layout_marginTop = "30dp"
android:layout_width = "wrap_content"
android:layout_height = "match_parent" />
</LinearLayout>위 코드에서는 전역 변수의 값을 화면에 표시하기 위해 TextView를 사용했습니다.
3단계: MainActivity 작성
src/MainActivity.java 파일에 아래 코드를 추가합니다.
package com.example.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView actionEvent;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actionEvent = findViewById(R.id.actionEvent);
actionEvent.setText("Click");
actionEvent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
singleToneClass singleToneClass = com.example.myapplication.singleToneClass.getInstance();
singleToneClass.setData("Tutorialspoint.com");
actionEvent.setText(singleToneClass.getData());
}
});
}
}위 코드에서는 TextView를 클릭하면 싱글톤 클래스의 인스턴스를 가져와 데이터를 저장한 후, 다시 읽어와 화면에 출력하도록 구현했습니다.
4단계: 싱글톤 클래스 작성
src/singleToneClass.java 파일에 아래 코드를 추가합니다.
package com.example.myapplication;
public class singleToneClass {
String s;
private static final singleToneClass ourInstance = new singleToneClass();
public static singleToneClass getInstance() {
return ourInstance;
}
private singleToneClass() {
}
public void setData(String s) {
this.s = s;
}
public String getData() {
return s;
}
}이 싱글톤 클래스가 바로 전역 변수 역할을 합니다. 생성자를 private으로 선언하여 외부에서 인스턴스를 직접 생성하지 못하게 하고, getInstance() 메서드를 통해서만 동일한 인스턴스에 접근할 수 있도록 설계되었습니다.
애플리케이션 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 Android 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run(실행) 아이콘을 클릭하세요. 목록에서 자신의 모바일 기기를 선택하면, 기기에 기본 화면이 표시됩니다.

화면의 TextView를 클릭하면 아래와 같이 싱글톤 클래스에 저장된 전역 변수 값이 결과로 표시됩니다.

마무리 정리
Android에는 Java처럼 진정한 의미의 '전역 변수' 문법이 없기 때문에, 싱글톤 패턴을 사용하면 앱 어디서든 접근 가능한 공유 데이터 저장소를 손쉽게 만들 수 있습니다. 이 방식 외에도 Application 클래스 상속, SharedPreferences, ViewModel 등의 대안도 있으니, 데이터의 성격과 생명주기에 맞게 적절히 선택하시기 바랍니다.