뷰와 뷰그룹의 차이
뷰는 화면에 보이는 UI 구성요소이다. 컨트롤 또는 위젯이라고도 불리고 뷰 그룹을 포함한다.
뷰 그룹은 뷰 들을 여러개 포함하고 있는 것이다. 뷰 그룹도 뷰에서 상속하여 뷰가 된다.
뷰는 뷰 그룹을 포함하고 뷰 그룹은 뷰를 상속한다.
위젯과 레이아웃의 차이
위젯은 뷰 중에서 버튼, 텍스트와 같이 일반적인 컨틀롤의 역할을 하는 것이다.
레이아웃은 뷰 그룹 중에서 내부의 뷰들을 포함하고 있으면서 그것들을 배치시키는 역할을 하는 것이다.
위젯과 레이아웃 둘 다 뷰이긴 하나 레이아웃은 뷰 그룹을 상속하고 위젯은 텍스트뷰를 상속한다.
패딩과 마진의 차이
패딩은 뷰의 경계와 뷰의 내용물 사이의 간격이고 마진은 자식 뷰 주위의 여백이다.
렐러티브 레이아웃이란?
여러 하위 객체의 위치를 서로 상대적 위치로 나타내거나 상위 요소와 상대적으로 나타낼 수 있도록 해주는 레이아웃.
리니어 레이아웃이란?
여러 하위 요소를 하나의 가로 방향 또는 세로 방향으로 정리하는 레이아웃.
테이블 레이아웃이란?
주로 위젯을 표 형태로 배치할 때 사용되는 레이아웃이다.
그리드 레이아웃이란?
격자 모양으로 뷰를 나열하는 레이아웃이다. 셀의 위치와 크기를 변형할 수 있다.
테이블 레이아웃과 비슷하지만, 차일드를 순서대로 배치한다는 점에서 리니어 레이아웃과 비슷하다.
프레임 레이아웃이란?
뷰를 겹쳐서 표현할 수 있는 레이아웃이다. 레이아웃 내의 위젯을 왼쪽 상단부터 겹쳐서 출력한다.
컨스트레인트 레이아웃이란?
뷰의 연결점과 대상을 연결하여 배치하는 레이아웃이다.
인텐트란?
안드로이드 4대 컴포넌트가 상호 간에 데이터를 주고 받기 위한 메시지 객체이다.
암시적 인텐트와 명시적 인텐트의 차이
명시적 인텐트는 인텐트를 충족하는 애플리케이션이 무엇인지 지정한다. 즉, 다른 액티비티의 이름을 명확히 지정한다.
암시적 인텐트는 특정 요소의 이름을 대지 않지만, 그 대신 수행할 일반적인 작업을 선언하여 다른 앱의 구성 요소가 이를 처리할 수 있도록 해준다.
( 액션을 지정하여 안드로이드에서 제공하는 기존 응용 프로그램을 실행하는 것)
양방향 액티비티에서의 데이터 전달을 메소드를 사용할 설명하여라
메인 액티비티에서 putExtra()라는 데이터 전송 메서드를 실행하면 startActivityForResult() 메서드를 통해 세컨드 액티비티로 데이터(인텐트)가 전송된다. 세컨트 액티비티는 getExtra() 메서드를 통해 인텐트를 전달 받고 데이터를 가공해 putExtra()라는 메서드를 실행해 다시 메인 액티비티로 setResult() 인텐트가 가게 된다.
주로 디버깅을 하기 위해 사용하는 함수는?
로그캣 함수.
액티비티 생명주기를 메서드를 통해 설명하라.
onCreate() 메서드를 통해 액티비티가 생성한다.
onStart() 메서드를 통해 액티비티가 사용자에게 표시된다.
onResume() 메서드를 통해 사용자가 앱과 상호작용하며 어떤 이벤트가 발생하기 전까지 머무는 상태이다.
onPause() 액티비티가 일시중지 상태가 된다. 액티비티가 소멸하지는 않지만 포그라운드에 있지 않게 된다.
onStop() 액티비티의 모든 기능이 정지되고 실행이 종료된다.
메인 액티비티를 종료할 경우 => onDestroy() 액티비티가 소멸된다.
다른 액티비티 사용 및 종료 후 => onReStart() 액티비티를 다시 실행한다.
컨텍스트 메뉴와 옵션 메뉴의 차이
옵션 메뉴는 항목의 기본 메뉴이다.
컨텍스트 메뉴는 사용자가 길게 클릭하면 나타나는 플로팅 메뉴이다. (윈도우 창이 뜬다.)
오래 눌렀을 때 눌리는 메뉴는?
컨텍스트 메뉴
프래그먼트란?
FragmentActivity 내의 어떤 동작 또는 사용자 인터페이스의 일부를 나타내는 자체적인 뷰 레이아웃이다.
액티비티와 프래그먼트의 차이는?
액티비티는 독립적으로 활용할 수 있지만 프래그먼트는 액티비티에 종속된다.
액티비티는 전체 화면을 차지하고, 프래그먼트는 전체 화면이 아닌 일부 화면으로 구성할 수도 있기 때문에 상대적으로 유연한 UI 디자인이 가능하다.
액티비티는 자동적으로 백 스택에 넣어지고, 프래그먼트는 트랜잭션을 통해서 요청해야 백 스택에 넣어진다.
액티비티 간의 통신은 액티비티 매니저를 통해 인텐트가 전달되어 통신한다.
프래그먼트 간의 통신은 프래그먼트 매니저를 통해 메서드를 호출하여 통신한다.
트렌젝션이란?
액티비티에서 커밋한 변경사항의 집합이다.
프래그먼트가 액티비티의 프래그먼트 매니저를 통해 소통하는 방식을 설명하라
액티비티에서 프래그먼트를 사용하는 경우,
1) getFragmentManager() 메서드를 통해 매니저를 참조하고
2) beginTransaction() 메서드를 통해 트랜젝션을 시작한다.
3) commit()을 통해 추가, 삭제, 교체, 저장하는 트랜젝션을 실행한다.
프래그먼트의 생명주기를 메서드를 통해 설명하라
onAttach() - 프래그먼트가 액티비티와 연결되어 있던 경우 호출 ( 여기에서 액티비티가 전달됨)
onCreate() - 프래그먼트를 생성할 때 시스템에서 호출.
onCreateView() - 프래그먼트와 연결된 뷰 계층을 생성하기 위해 호출
onActivityCreated() - 액티비티의 onCreat() 메서드가 반환할 때 호출
onPause() - 변경사항을 커밋한다.
onDestroyView() - 프래그먼트와 연결된 뷰 계층이 제거되는 중일 때 호출
onDetach() - 프래그먼트가 액티비티와 연결이 끊어지는 중일때 호출
출처: https://ehyeok9.tistory.com/entry/모바일-프로그래밍-중간-답안-작성 [이혁규의 개발비책:티스토리]
onCreate(), onCreatView(), onViewCreated(), onViewStateRestored()
=> onAttach()를 통해 프라그맨트 매니저에 추가된 상태이다. 이 상태에서는 데이터를 초기화, 복구하거나 저장된 상태를 불러온다.
onStart() => 프라그맨트 안에 있는 뷰를 사용할 수 있는 상태가 된다.
onResume() => 액티비티와 마찬가지로 사용자와 프라그맨트가 상호작용하는 단계이다.
onPause() => 사용자로부터 포커스를 잃은 상태가 된다.
onStop(), onSaveInstanceState(), onDestroyView() => 프라그맨트가 포그라운드에서 더이상 보이지 않는 상태이다.
onDestroy() => 프라그맨트가 프라그맨트 매니저로부터 detach되어 소멸한다.
프래그먼트의 생명주기와 액티비티 생명주기의 차이점은?
액티비티는 정지되면 시스템에서 관리하는 액티비티의 백 스택에 들어간다. 하지만 프래그먼트는 이를 제거하는 트랜젝션에서 인스턴스를 저장하라고 명시적으로 요청할 경우에만 호스트 액티비티에서 관리하는 백 스택으로 들어간다.
쓰레드란?
프로세스 내에서 "순차적으로 실행되는 실행 흐름"의 최소 단위를 의미한다.
어떤 상황에서 쓰레드를 사용하는 것이 좋은지
실행 시간이 오래 걸리거나 외부 데이터를 수신하기 위해 대기 상태에 머물러 있는 경우에 멀티 스레드 사용.
서비스와 스레드의 차이
서비스는 브로드캐스팅을 이용하여 결과값을 다른 객체에 전달할 수 있지만, 스레드는 UI 객체에 직접 접근할 수 없음으로 핸들러 객체를 통해 전달해야 한다.
메서드를 중심으로 메인스레드와 스레드가 어떻게 통신하는지 설명하라.
스레드에서 obtainMessage() 메서드를 호출하여 메시지 객체를 리턴 받음. 메시지 내용을 가공 후 sendMessage() 메서드를 통해 메시지 큐에 넣음. 핸들러에서 handleMessage() 메서드를 통해 메시지 큐 안의 메시지들을 메인 스레드에 전달한다.
스레드가 데이터를 주고받는 2가지 방식에 대해 설명하라?
핸들러 클래스 / Runnable 객체
핸들러를 통해 스레드와 메인 스레드가 메시지를 주고 받음.
Runnable 객체를 핸들러의 post() 메서드를 통해 전달해주면 이 객체에 정의된 run() 메소드의 코드를 메인 스레드에서 실행함.
프레퍼런스란?
안드로이드에서 가장 간단한 데이터 저장 기법이다. 키와 값 형식으로 기본형 데이터를 저장하고 읽을 수 있다.
프레퍼런스는 데이터를 어떻게 저장하는가?
키와 값 형식으로 기본형 데이터를 저장한다.
내부저장소란?
안드로이드 기기 내장 메모리 영역이다.
/data 디렉터리 내부에 존재한다.
외부저장소란?
내부저장소를 제외한 사용자 데이터 저장 공간이다.
내부저장소와 외부저장소의 차이
내부 저장소는 따로 권한이 필요 없지만, 외부 저장소의 경우 접근 권한이 필요하다.
안드로이드 스튜디오에서 XML로 앱의 전반적인 정보나 즉 앱의 이름이나 컴포넌트 구성과 같은 정보를 가지고 있는 파일명은 무엇인가?
manifest
뷰와 위젯에 대해 설명하라
뷰는 모든 UI 구성 요소를 나타낸다. 뷰 그룹, 텍스트뷰 등 뷰에 포함되어 있는 관계이며 위젯, 컨트롤이라고도 불린다.
위젯은 뷰 중에서 텍스트, 버튼과 같은 컨트롤 역할을 하는 뷰를 지칭하는 단어이다.
테이블 레이아웃, 그리드 레이아웃, 프레임 레이아웃에 대해 설명하라
테이블 레이아웃은 표 형태의 레이아웃이다. 즉, 뷰들을 행렬 형식으로 지정할 수 있다.
그리드 레이아웃은 테이블 레이아웃과 유사하지만 셀의 크기를 확장할 수 있다.
프레임 레이아웃은 뷰들을 겹쳐서 표현하는 레이아웃이다. 왼쪽 상단에 뷰들이 겹쳐서 표현된다.
명시적 인텐트의 양방향 액티비티의 데이터 전달 과정을 메인 액티비티, 세컨트 액티비티로 구성하였을 때, 메소드를 활용하여 과정을 설명하라
메인 액티비티에서 putExtra() 메서드를 통해 인텐트로 보낼 데이터를 저장한다.
startActivityForResult() 메서드를 통해 인텐트를 세컨트 액티비티로 보낸다.
세컨트 액티비티에서 getExtra() 메서드를 통해 인텐트를 받는다.
세컨트 액티비티에서 putExtra() 메서드를 통해 받은 데이터를 가공 후 인텐트로 보내기 위한 데이터를 저장한다.
setResult() 메서드를 통해 인텐트를 메인 액티비티로 보낸다.
메인 액티비티에서 onActivityResult() 메서드를 오버라이딩하여 그 안의 getExtra() 메서드로 데이터를 돌려 받는다.
인텐트 생명주기를 메소드를 활용하여 순차적으로 과정을 설명하라
onCreate() 액티비티 생성
onStart() 액티비티가 사용자에게 표시
onResume() 사용자와 앱이 상호작용
onPause() 액티비티가 일시정지 상태가 됨. 액티비티가 포그라운드에 있지 않게 됨.
onStop() 액티비티가 사용자에게 더 이상 표시되지 않으며 모든 기능이 정지되고 종료된다.
onDestroy() 액티비티가 소멸
일반적으로 화면 없이 동작하는 프로그램을 뜻하며 백그라운드 프로세스라고도 하는 것은?
서비스
안드로이드는 보안상 앱에서 사용하는 데이터를 외부에서 접근할 수가 없으므로 파일이나 데이터베이스를 외부 앱에서 사용하도록 하려면 이것을 만들어서 외부로 제공해야한다. 이것은 무엇인가?
콘텐트 프로바이더
비동기 처리 스레드의 메시지 처리 과정을 메서드를 통해 설명하시오
스레드가 obtainMessage()를 호출하여 메시지 큐에서 메시지 객체를 전달 받음.
스레드에서 메시지를 가공 후 sendMessage()를 호출하여 메시지를 메시지 큐에 넣음
핸들러가 handleMessage() 메시지 큐 안의 메시지를 메인 스레드에 전달.
메인 스레드에서 메시지에 정의된 기능을 수행.