공부일지
231121 (Android)
CD가참둥그렇다
2023. 11. 21. 12:58
Activity & Intent
Activity
- 앱을 실행했을 때 보여지는 화면을 구성할 수 있도록 해준다.
- 화면이 여러개 = Activity 가 여러가지이다.
- 종류
- 화면 전체를 가득 채우는 액티비티
- 다이얼로그 형태의 액티비티(다른 액티비티 상위에 동작하는 액티비티)
- 액티비티 클래스
- 상위에 Activity - FragmentActivity, AppCompatActivity 등이 있다.
- 액티비티는 직접 생성할 수 없다. Manifests.xml에 명시된 액티비티만 생성 가능하다.
안드로이드 액티비티의 수명주기
- 실행 Resumed : 액티비티가 화면에 보여지고 사용 가능한 상태
- 일시정지 Paused : 액티비티가 다른 액티비티에 의해 숨겨진 상태
- 중지 Stopped : 액티비티가 보이지 않고 중지된 상태
- 수명
- onCreate : 액티비티 시작 시 동작
- onStart : 액티비티 시작 시 동작하는 곳, 재시작 시 도착하는 곳
- onResume : 완전한 액티비티 실행 상태
- onPause : 다른 액티비티가 전면에 보이는 상태
- onStop : 완전히 액티비티 정지
- onRestart : 정지된 액티비티를 onStart부터 재시작
- onDestroy : 액티비티 리소스 삭제
액티비티의 이용
- 현재는 onCreate에서 대부분 코드 처리해도 된다.
- 추후 여러 화면 혹은 Spring 연동 시 새로 고침 등의 처리가 필요 시 수명주기를 이용해야 한다.
- Spring 등 모든 개발 툴에서 디버깅 모드 제공, 프로그램 전체 구조 파악에 좋다.
인텐트(Intent)
- 안드로이드 4대 컴포넌트 중 통신을 담당하는 객체이다.
- 액티비티 사이에 데이터 전달, 새로운 액티비티를 띄우는 역할을 담당한다.
- 인텐트 초기화 시 필요한 정보
- 현재 앱의 상태(현재 화면 등)
- 실행이 되어야 할 화면(Activity)의 클래스 위치
- 화면 전환의 예시
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
<**action android:name="android.intent.action.MAIN"** />
- 앱 실행 시 최초로 동작 할 액티비티로 설정한다.
- android:exported="true" : 익스포티드 설정도 true로 설정해야 로딩이 된다.
Context
- 모든 액티비티는 Context 자체이다.
- 앱의 현재 상태나 환경에 대한 모든 정보를 제공하고 접근할 수 있는 인터페이스(static)
- 화면 전환, 토스트창을 보여주는 등의 디자인 관련 된 기능을 사용하기 위해서는 내가 현재 액티비티를 반드시 알려줘야 할 의무가 있다.
화면전환 테스트
- tv_join을 자바코드에서 찾아서 사용가능하게 초기화 시키기
- tv_join에 온클릭 이벤트를 걸기
- tv_join온클릭이 되면 JoinActivity로 화면 전환 해보기.
- JoinActivity는 별도로 추가해야함.
TextView tv_join = findViewById(R.id.tv_join);
tv_join.setOnClickListener(v->{
Intent intent = new Intent(LoginActivity.this, JoinActivity.class);
startActivity(intent);
});