공부일지

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대 컴포넌트 중 통신을 담당하는 객체이다.
  • 액티비티 사이에 데이터 전달, 새로운 액티비티를 띄우는 역할을 담당한다.
  • 인텐트 초기화 시 필요한 정보
    1. 현재 앱의 상태(현재 화면 등)
    2. 실행이 되어야 할 화면(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)
  • 화면 전환, 토스트창을 보여주는 등의 디자인 관련 된 기능을 사용하기 위해서는 내가 현재 액티비티를 반드시 알려줘야 할 의무가 있다.

화면전환 테스트

  1. tv_join을 자바코드에서 찾아서 사용가능하게 초기화 시키기
  2. tv_join에 온클릭 이벤트를 걸기
  3. 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);
        });