티스토리 뷰

etc/면접

면접 준비 - 안드로이드

hsm914 2023. 3. 12. 15:05
728x90

- 안드로이드

리눅스 운영체제 안에서 리눅스와 상호작용하면서 동작

 

 

- 안드로이드 vs iOS 개발

안드로이드는 오픈소스를 기반으로 하기 때문에 개발에 대한 제약사항이 적고,

ios는 아이폰에만 한정적으로 호환되기 때문에 제한적인 개발 환경을 가짐.

 

 

- 코틀린 vs 자바

코틀린은 Nullablenon-nullable이 존재해서 NPE 예외를 방지할 수 있고, 비교적 간결하다.

자바와 완전히 호환된다.

객체지향과 함수형 프로그래밍의 특성 모두 가지고 있음.

 

 

- 프래그먼트

액티비티 안에 존재하고, 모듈화하거나 재사용할 수 있는 화면 구성요소

 

 

- 4대 컴포넌트

  1. BroadcastReceiver
    어떤 행위가 발생했을 때 수행되는 방송(브로드캐스트)을 수신하는 객체
    (이때 인텐트 필터로 수신자가 구독할 브로드캐스트 작업을 지정함)
  2. Service
    백그라운드에서 실행할 수 있는 구성요소
    startService에 서비스의 intent를 담아 호출
  3. Activity
    사용자가 눈으로 볼 수 있는 하나의 화면
    새 액티비티를 시작하려면 startActivity에 해당 액티비티의 intent를 담아 호출
  4. Content Provider
    애플리케이션 사이에서 데이터 접근을 쉽게 하도록 관리해주는 클래스

 

- Notification

애플리케이션 외부에서 사용자에게 특정 이벤트를 알리는 알림.

* pendingIntent: 어떤 인텐트를 당장 수행하지 않고 특정한 시점에 수행해야 할 때 사용

 

 

- Intent

애플리케이션 구성요소 간에 작업 수행을 위한 정보를 전달하는 역할.

예를들어 액티비티 간 화면 전환하거나 브로드캐스트를 송수신할 때.

기본적으로 수행할 기능을 나타내는 액션과, 액션을 수행할 데이터로 구성됨

  • 명시적 인텐트
    실행하고자 하는 컴포넌트의 패키지, 클래스명을 정확하게 명시하는 것.
    보안상 자신의 패키지 내부의 액티비티를 실행할때만 사용됨
  • 암시적 인텐트
    어떤 작업을 수행할 것인지만 선언하여 다른 앱의 구성 요소가 이를 처리할 수 있도록 함

 

- Intent filter

어느 유형의 인텐트를 수락할지 직접 지정

 

 

- 새 액티비티 실행 순서 (암시적)

1. 새롭게 생성한 액티비티 이름과 전달하고자 하는 데이터를 담은 인텐트 생성

2. startActivity에 인텐트를 담아 호출하면 액티비티 매니저에 전달됨

3. 액티비티 매니저는 인텐트를 분석해 해당 액티비티 실행

4. 인텐트는 실행할 액티비티까지 전달되어 데이터 전송

 

 

- 액티비티 생명주기

  1. onCreate()
    액티비티 생성될 때 호출. 사용자 인터페이스 초기화에 사용.
  2.  onStart()
    액티비티가 사용자에게 보여지기 직전에 호출
  3. 3onResume() 
    액티비티가 사용자와 상호작용하기 직전에 호출
  4. onPause()
    다른 액티비티가 최상단에서 보여질 때 호출. 데이터 저장, 스레드 중지 등의 처리.
  5. onStop() 
    액티비티가 완전히 보여지지 않을 때 호출.
  6. onDestory() 
    액티비티가 소멸될 때 호출.

5,6 -> 호출되지 않을 수 있음.

onRestart() : 액티비티가 멈췄다가 다시 시작될 때 호출

 

 

- fragment 생명주기

  1. onAttach()
    프래그먼트가 액티비티에 붙을 때 호출
  2. onCreate()
    프래그먼트가 액티비티의 호출을 받아 생성될 때 호출
  3. onCreateView()
    프래그먼트가 레이아웃을 인플레이트할 때 호출
  4. onViewCreated()
  5. onViewStateRestored()
  6. onStart()
    프래그먼트가 사용자에게 보여질 때
  7. onResume()
    프래그먼트가 사용자와 상호작용할 때
  8. onPause()
    부모 액티비티가 아닌 다른 액티비티가 최상단에 띄워질 때
  9. onStop()
    프래그먼트의 화면이 삭제될 때 (다른액티비티가 화면을 완전히 가릴 때)
  10.  onDestroyView()
    프래그먼트와 관련된 뷰의 리소스가 해제될 때
  11. 1onDestroy()
    프래그먼트가 종료될 때
  12. 1onDetach()
    프래그먼트가 액티비티와 연결이 끊길때

 

- inflate 

xml에 표기된 레이아웃들을 코드에서 사용하기 위해 메모리에 객체화시키는 것.

 

 

- manifest

앱에 대한 권한, 컴포넌트, 패키지 이름 등과 같은 필수적인 정보 저장하여 빌드 툴과 OS, 구글 플레이에 제공함.

 

 

- bundle vs intent

intent: 값을 저장하는 것이 아닌 전달하기 위한 객체.

bundle: 상태나 값을 저장하기 위한 Map 객체. (fragment-fragment, activity-fragment 간에 데이터를 전달하기 위해 사용)

 

 

- weight

layout의 가로 세로 길이를 특정 비율로 길이를 맞추어 디바이스 크기에 제한없이 layout을 표현할 수 있도록 함.

부모 레이아웃에게 weightSum을 설정하고 하위 레이아웃에게 weightSum을 적절히 분배해 길이의 비율을 설정한다.

 

 

- context

액티비티나 애플리케이션의 현재 상태 정보를 가지고 있는 클래스.

application context: 액티비티 범위를 벗어난 곳에 context가 필요한 작업에 적합.

activity context: 액티비티 안에서만 사용가능. 액티비티의 생명주기에 종속.

 

 

- ANR

application not responding의 약자로, 메인 스레드인 ui 스레드가 오랫동안 작업을 처리하지 못하면 발생하는 에러.

예를들어 일정 시간 안에 서비스 실행이 완료되지 않거나, 브로드캐스트 리시버가 실행을 완료하지 못한 경우.

메인 스레드에서 실행되는 작업을 worker 스레드로 이동시켜 해결할 수 있다.

 

 

- 젯팩

안드로이드 앱을 쉽고 빠르게 구현하는데 도움이 되는 도구들의 모음

 

 

- SharedPreferences

  • 애플리케이션 내에서 일종의 데이터베이스 역할을 함.
  • 애플리케이션에 키-값 방식의 데이터를 파일로 저장
  • 애플리케이션이 삭제되기 전까지 저장한 데이터가 보존된다.
  • 간단한 설정값이나 문자열을 저장하기 위해 사용.

 

- 파이어베이스

구글의 모바일 애플리케이션 개발 플랫폼으로, 사용자 이용횟수나 광고 효과, 문제 발생 빈도 등을 알려줌.

 

 

- thread간 통신 방법

단일 스레드에서 긴 작업을 수행하면 ANR의 원인이 되거나 애플리케이션의 반응성을 낮출 수 있다.

따라서 메인 스레드에서는 최소한의 일을 담당하고 긴 작업은 다른 스레드로 분리한다.

이 메인 스레드와 다른 스레드가 협업하기 위해 스레드간 통신이 필요하다.

 

한 스레드에 루퍼, 핸들러, 메시지 큐를 가지고 있음.

  • 메시지 큐: 루퍼 내부에 존재하고 메시지(태스크)를 저장
  • 루퍼: 메시지 큐에서 메시지를 순차적으로 꺼내 핸들러에게 전달
  • 핸들러: 루퍼에게 받은 메시지를 처리하고 스레드 간 메시지를 전달하고, 외부 스레드로부터 받은 메시지를 메시지큐에 저장

루퍼가 메시지 큐에서 메시지를 꺼내 핸들러에게 전달하고, 그 핸들러는 또 다른 스레드에게 메시지를 전달한다.

Thread 클래스를 상속받거나 Runnable 인터페이스를 구현함으로써 스레드 만듦

 
참고

https://velog.io/@rkdals3912/%EC%8A%A4%EB%A0%88%EB%93%9C-%ED%86%B5%EC%8B%A0%EB%B0%A9%EB%B2%95

https://velog.io/@dlrmwl15/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-SharedPreferences

https://velog.io/@evergreen_tree/Android-%ED%94%84%EB%9E%98%EA%B7%B8%EB%A8%BC%ED%8A%B8-%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함