자바 안드로이드 앱개발 강좌, 액티비티 제어

안드로이드 플랫폼에서 액티비티(Activity)는 사용자 인터페이스를 구성하는 핵심적인 요소입니다.
액티비티는 안드로이드 애플리케이션의 기본 구성 단위로, 어떤 작업을 사용자가 수행할 수 있는 화면으로 볼 수 있습니다.

액티비티란?

액티비티는 특정한 작업을 사용자에게 보여주는 화면입니다. 예를 들어, 사용자가 버튼을 클릭할 수 있는 화면,
정보를 입력할 수 있는 화면 등이 모두 액티비티에 해당합니다. 각 액티비티는 독립적으로 존재하며 사용자가
여러 액티비티를 전환하면서 다양한 작업을 수행할 수 있도록 합니다.

액티비티 생명주기

액티비티는 생성, 시작, 일시정지, 재개, 정지, 종료 등의 상태를 가지고 있으며, 이러한 상태는
액티비티의 생명주기를 통해 관리됩니다. 액티비티의 생명주기를 이해하는 것은 앱 개발에 매우 중요합니다.

생명주기 메서드

  • onCreate(): 액티비티가 처음 생성될 때 호출됩니다. UI 구성 및 초기화 작업을 수행합니다.
  • onStart(): 액티비티가 사용자에게 보이기 시작할 때 호출됩니다.
  • onResume(): 액티비티가 사용자와 상호작용할 수 있게 될 때 호출됩니다.
  • onPause(): 다른 액티비티가 사용자와 상호작용을 시작하기 전에 호출됩니다. 중요한 작업을 저장하는 데 사용됩니다.
  • onStop(): 액티비티가 더 이상 사용자에게 보이지 않을 때 호출됩니다.
  • onDestroy(): 액티비티가 종료될 때 호출됩니다. 메모리 누수를 방지하기 위해 남은 리소스를 정리하는 데 사용됩니다.

액티비티 예제

아래는 기본적인 액티비티를 생성하고 생명주기 메서드를 구현한 예제 코드입니다.
이 예제에서는 텍스트뷰에 현재 상태를 출력하게 됩니다.


public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView = findViewById(R.id.textView);
        textView.setText("onCreate 호출됨");
    }

    @Override
    protected void onStart() {
        super.onStart();
        TextView textView = findViewById(R.id.textView);
        textView.setText("onStart 호출됨");
    }

    @Override
    protected void onResume() {
        super.onResume();
        TextView textView = findViewById(R.id.textView);
        textView.setText("onResume 호출됨");
    }

    @Override
    protected void onPause() {
        super.onPause();
        TextView textView = findViewById(R.id.textView);
        textView.setText("onPause 호출됨");
    }

    @Override
    protected void onStop() {
        super.onStop();
        TextView textView = findViewById(R.id.textView);
        textView.setText("onStop 호출됨");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        TextView textView = findViewById(R.id.textView);
        textView.setText("onDestroy 호출됨");
    }
}
    

인텐트(Intent)와 액티비티 간의 통신

안드로이드에서 액티비티 간의 전환은 인텐트(Intent)를 통해 이루어집니다.
인텐트는 하나의 액티비티에서 다른 액티비티로 정보를 전달하거나,
시스템의 컴포넌트를 호출하는 데 사용되는 객체입니다.

인텐트 사용 예제

두 개의 액티비티를 생성하고, 첫 번째 액티비티에서 버튼 클릭 시 두 번째 액티비티로
이동하는 예제 코드를 살펴보겠습니다.


// MainActivity.java
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(v -> {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        });
    }
}

// SecondActivity.java
public class SecondActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        TextView textView = findViewById(R.id.textView);
        textView.setText("두 번째 액티비티입니다.");
    }
}
    

데이터 전달하기

인텐트를 사용할 때 데이터도 함께 전달할 수 있습니다. 아래 예제를 통해
인텐트를 통해 데이터를 전달하는 방법을 살펴보겠습니다.


// MainActivity.java (데이터 전달 추가)
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(v -> {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            intent.putExtra("message", "Hello, Second Activity");
            startActivity(intent);
        });
    }
}

// SecondActivity.java (데이터 수신)
public class SecondActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        TextView textView = findViewById(R.id.textView);
        String message = getIntent().getStringExtra("message");
        textView.setText(message);
    }
}
    

결론

오늘 우리는 안드로이드 앱 개발에서 액티비티와 그 생명주기,
인텐트를 통한 액티비티 간의 전환 및 데이터 전달 방법에 대해 알아보았습니다.
이러한 개념들은 안드로이드 앱 개발의 기초 중 하나이며,
더 복잡한 앱을 만들기 위한 출발점이 될 것입니다.
앞으로의 수업에서는 더 많은 기능과 UI 요소를 다룰 예정이니 많은 관심 바랍니다.