Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Android에서 프로그래밍 방식으로 앱 최초 실행 여부 확인하기

이 예제에서는 Android 앱이 처음 실행되는 것인지 아니면 이미 한 번 이상 실행된 적이 있는지를 프로그래밍 방식으로 판단하는 방법을 알아봅니다. 앱 최초 실행 여부를 확인하면 온보딩 화면 표시, 초기 설정 안내, 웰컴 메시지 출력 등 다양한 기능을 구현할 수 있습니다.

핵심 원리: SharedPreferences 활용

앱의 첫 실행 여부를 확인하는 가장 일반적인 방법은 SharedPreferences를 사용하는 것입니다. 앱이 처음 시작될 때 플래그(flag) 값을 저장해 두고, 이후 실행 시 해당 값이 존재하는지 검사하여 첫 실행인지 아닌지를 판별합니다.

1단계 — 새 프로젝트 생성

Android Studio에서 File → New Project로 이동한 후, 필요한 모든 세부 정보를 입력하여 새 프로젝트를 생성합니다.

2단계 — 레이아웃 파일 작성 (res/layout/activity_main.xml)

아래 코드를 activity_main.xml에 추가합니다.

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout 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:layout_height = "match_parent"
   tools:context = ".MainActivity">
   <TextView
      android:id = "@+id/frstTime"
      android:layout_width = "match_parent"
      android:layout_height = "wrap_content"
      android:text = "Hello World!"
      android:textSize = "30sp"
      app:layout_constraintBottom_toBottomOf = "parent"
      app:layout_constraintLeft_toLeftOf = "parent"
      app:layout_constraintRight_toRightOf = "parent"
      app:layout_constraintTop_toTopOf = "parent" />
</android.support.constraint.ConstraintLayout>

위 코드에서는 TextView 하나를 배치했습니다. 사용자가 애플리케이션을 열면 앱이 첫 실행인지 여부를 검사하고, 첫 실행이라면 TextView에 '첫 실행' 관련 문구를 표시하고, 그렇지 않다면 '첫 실행이 아님' 문구를 보여줍니다.

3단계 — 메인 액티비티 코드 작성 (src/MainActivity.java)

아래 코드를 MainActivity.java에 추가합니다.

package com.example.andy.myapplication;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
   SharedPreferences sharedPreferences;
   SharedPreferences.Editor sharedEditor;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      sharedPreferences = getPreferences(Context.MODE_PRIVATE);
      sharedEditor = sharedPreferences.edit();
      TextView frstTime = findViewById(R.id.frstTime);
      if (isItFirestTime()) {
         frstTime.setText("First Time");
      } else {
         frstTime.setText("Not a First Time");
      }
   }
   public boolean isItFirestTime() {
      if (sharedPreferences.getBoolean("firstTime", true)) {
         sharedEditor.putBoolean("firstTime", false);
         sharedEditor.commit();
         sharedEditor.apply();
         return true;
      } else {
         return false;
      }
   }
}

코드 동작 방식 살펴보기

getPreferences(Context.MODE_PRIVATE)를 호출하면 해당 액티비티 전용의 private SharedPreferences 객체가 반환됩니다. isItFirestTime() 메서드는 "firstTime" 키의 boolean 값을 읽어오며, 기본값(default)은 true입니다. 즉, 저장된 값이 없다면 앱이 처음 실행된 것으로 간주합니다.

첫 실행으로 판별되면 즉시 firstTime 값을 false로 저장합니다. 이렇게 하면 다음번에 앱을 실행했을 때 저장된 값이 false이므로 '첫 실행이 아님'으로 처리됩니다.

참고: commit()apply()를 함께 호출할 필요는 없습니다. commit()은 동기적으로(즉시) 저장하고 결과를 반환하며, apply()는 비동기적으로 백그라운드에서 저장합니다. 일반적으로 UI 스레드 블로킹을 피하기 위해 apply() 하나만 사용하는 것이 권장됩니다.

애플리케이션 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 Android 모바일 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바에서 Run 아이콘을 클릭합니다. 옵션 목록에서 자신의 모바일 기기를 선택하면, 모바일 기기에 기본 화면이 표시됩니다.

Android에서 프로그래밍 방식으로 앱 최초 실행 여부 확인하기

사용자가 앱을 처음 열었을 때는 위와 같이 'First Time' 메시지가 표시되고, 그 이후에 앱을 다시 실행하면 아래와 같이 'Not a First Time' 메시지가 나타납니다.

Android에서 프로그래밍 방식으로 앱 최초 실행 여부 확인하기

마무리

이처럼 SharedPreferences에 플래그 값을 저장하는 간단한 방법만으로도 앱의 최초 실행 여부를 손쉽게 확인할 수 있습니다. 이 기법은 첫 실행 시에만 튜토리얼이나 사용자 동의 화면을 보여주거나, 초기 데이터를 설정하는 등의 시나리오에서 널리 활용됩니다.