안드로이드 플랫폼에서 액티비티(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 요소를 다룰 예정이니 많은 관심 바랍니다.