내일배움캠프 22일차

김재현·2024년 3월 27일
post-thumbnail

오늘은 스탠다드반 수업을 들었다. (과제는 내일 시작 예정)

과제에서 uri 링크를 따라서 다른 링크로 가는 법을 한번 구현해보고 싶었는데

간단한걸 오늘에서야 해보게되었다.

URI 구현해보기

  • 먼저 저번에 만들어둔 UI 구현 레이아웃을 사용했다.

Sign in 버튼으로 로그인 화면(Activity_sub)로 이동하게 intent 해줬다.

val btn_signIn = findViewById<Button>(R.id.btn_sign)
btn_signIn.setOnClickListener {
	val intent = Intent(this@MainActivity, SubActivity::class.java)
	startActivity(intent)
}

  • 여기서 구글, 페이스북, 애플 버튼을 각 홈페이지로 연결해주게 해보고 싶어져서 해보았다.

각 ImageView를 눌렀을 때 각 URI로 intent 해주는 작업을 해주었는데




생각보다 너무 간단하고 빨리 끝나서 당황스러웠던...Intent.ACTION_VIEW를 통해 URI를

연동 시켜줄 수 있는 점 제외하고는 너무 간단하였다. 그 부분은 명령어를 몰라서 구글링해보았다.

https://kdjun97.github.io/kotlin/kotlin-kakao-login/

이 블로그는 아이디를 연동하는 법이 궁금해져서 찾아보다가 알게되었다.

4대 컴포넌트

(Activity 생명 주기를 공부하다가 알게되어 궁금해져서 정리해보고 싶어졌다.)

  • 안드로이드에는 4대 컴포넌트가 있다.
  1. Activity (액티비티)
  2. Service (서비스)
  3. Broadcast Receiver (방송 수신자)
  4. Content Provider (콘텐츠 제공자)

안드로이드 애플리케이션을 구성하는 기본 요소 4가지를 안드로이드 4대 컴포넌트라고 한다.

안드로이드 4대 컴포넌트는 AndroidMainfest.xml 파일에 그 정보가 보관된다.

이제 각 컴포넌트 별로 특징과 가능하다면 예제까지 정리해보도록 하자.

Activity (액티비티)

  • 애플리케이션에서 사용자에게 보여지는 화면을 담당하는 컴포넌트이다. 화면뿐 아니라 화면에서

    일어나는 사용자와의 상호작용도 액티비티가 관여한다. 우리가 다룬 액티비티를 통해 기능을 구현

    하듯 액티비티가 모여서 하나의 어플을 구성한다.

  • 안드로이드 애플리케이션은 반드시 하나이상의 액티비티를 가지고 있어야하며 두개의 액티비티를

    동시에 호출할 수는 없습니다. 하나의 액티비티에서 화면을 둘 이상으로 나누려면 프래그먼트를

    사용하여 화면을 분할시킬 수 있다.

Service (서비스)

  • 서비스는 액티비티와 반대로, 직접적으로 상호작용하는 요소는 아니지만 백그라운드에서 작업을

    처리하기 위해서 주로 사용하고 UI스레드라고 불리는 동일한 애플리케이션 스레드로 실행된다.

  • 예시로 음악 앱을 들 수가 있는데 앱을 종료해도 음악이 계속 재생되는데 애플리케이션이

    종료되어도 이미 시작된 서비스는 백그라운드에서 계속 동작한다.

  • 서비스의 종류
  • 포그라운드 서비스
    : 사용자에게 보이는 작업으로 반드시 알림을 표시해야 하며 사용자가 앱과 상호작용하지 않을 때도 계속 실행된다.
  • 백그라운드 서비스
    : 사용자에게 직접 보이지 않는 작업으로 모바일 게임을 업데이트하는 중에 해당 앱을 종료해도
    업데이트가 계속 되는 것은 백그라운드 서비스라고 보면된다.
  • 바인드 서비스
    : 앱 컴포넌트가 바인드 서비스를 호출하면 서비스가 바인딩 되는데 바인딩 된 서비스는
    클라이언트-서버 인터페이스를 제공해 서비스와 상호 작용한다. 여러개가 한꺼번에 바인딩 될 수
    있고 바인딩 된 컴포넌트가 모두 종료되면 서비스도 같이 종료된다.
  • 포그라운드 서비스와 백그라운드 서비스의 차이는 앱과 상호작용을 하고 있는지 아닌지로 나눌

    수 있는데 앱을 켜서 무언가를 하고 보고 있다면 포그라운드, 사용자가 직관적으로 어떤 작업을

    하는지 확인할 수 없다면 백그라운드 서비스라고 보면 된다.

출처:[https://keykat7.blogspot.com/2021/01/android-notification-foreground-service.html]

Broadcast Receiver (방송 수신자)

  • 방송 수신자는 안드로이드 OS로부터 발생하는 각종 이벤트와 정보를 받아 핸들링하는 컴포넌트이다.

    보통 시스템에서 시작되며 시스템 부팅시 앱 초기화, 네트워크 끊김 같은 특수한 상황 처리와

    배터리 부족 알림, 문자 수신과 같은 정보를 받아서 하는 처리이다.

  • 거의 대부분 UI를 가지지 않으며 수신기를 통해 디바이스 상황을 감시하다가 이벤트가 발생시

    각 이벤트에 맞게 정의한 작업들을 수행하는 역할을 한다.

Content Provider (콘텐츠 제공자)

  • 콘텐츠 제공자는 데이터를 관리하고 다른 애플리케이션의 데이터를 제공하는데 사용되는

    컴포넌트로 특정한 어플이 사용하고 있는 DB를 공유하기 위해 사용한다.

  • SQLite DB/Web/파일 입출력 등을 통해서 데이터를 관리하고 외부 어플이 현재 실행중인

    어플 내에 있는 DB에 함부로 접근하지 못하게 할 수 있다.

  • 작은 데이터들은 인텐트로 어플끼리 데이터 공유가 가능하지만 콘텐트 프로바이더는 음악

    또는 사진 파일 등과 같이 용량이 큰 데이터들을 공유하는데 적합하다.

출처:[https://superohinsung.tistory.com/54]

하루의 마무리

  • 오늘은 개념 정리 좀 해보고 기능구현 해보고 뭔가 간단한 일들만 한 것 같다.

    사실 방송 수신자와 콘텐츠 제공자는 아직 사용을 안해봐서 개념이 좀 이해가 잘 안된다.

    무슨 말인지는 알겠는데 이해가 아직 안되는...?

    직접 나중에 사용해보면 알지 않을까 생각한다!

    특별과제하면서 하루 마무리해야겠다!

0개의 댓글