OS

[개발상식] 안드로이드 기술면접 준비 - 2

이손안나 2022. 11. 7. 17:11

Q1.  왜 액티비티 클래스의 onCreate() 메소드 안에서 setContentView()를 사용하는가?

- 액티비티의 oncreate 메소드는 액티비티 불릴 때 한번만 호출이 되기 때문에 초기화에 자주 사용된다.

onResume, onStart 같이 여러번 호출 될 수 있는 곳에서 호출하는 것은 매우 비효율적인 코드이다.

 

Q2.  액티비티 클래스의 onSavedInstanceState(), onRestoreInstanceSate() 역할은?

- onSaveInstanceState() : 액티비티가 pause 되기 전에 데이터를 저장하는데 사용한다.

- onRestoreInstanceState() : 액티비티가 파괴되고, 다시 재 생성될 때 액티비티가 가지고 있는 번들로부터 데이터를 회복할 수 있다. 

 

Q3.  화면 회전 했을 때 액티비티 동작 방법?

- 화면 회전을 했을 때 현재 만들어진 액티비티 인스턴스는 파괴되고 새로운 orientation을 가진 액티비티 인스턴트가 만들어진다. 때문에 데이터를 백업해두지 않으면 메모리에서 해제되기 때문에 이를 유의하여 개발해야합니다.

 

Q4. Content providers 에 대해 설명  ?

- 콘텐츠 프로바이더는 하나의 어플리케이션에서 요청시에 다른 어플리케이션으로 데이터를 제공합니다. 어플리케이션의 데이터 보안으로 인해 구조화 된 데이터 구조를 가지고 있도록 정의되어 있습니다. 콘텐츠 프로바이더는 기본적으로 다른 프로세스에서 다른 프로세스로 데이터를 제공할 수 있는 인터페이스를 가지고 있습니다. 

 

Q5.  인텐트를 사용하여 새로운 액티비티를 실행할 때 액티비티 스택을 클리어할 수 있는 방법?

1. FLAG_ACTIVITY_CLEAR_TOP 사용

2. FLAG_ACTIVITY_CLEAR_TASK & FLAG_ACTIVITY_NEW_TASK 를 동시에 사용

 

Q6.  Content providers 를 사용하여 데이터에 접근하는 방식?

- 먼저 access permissions를 획득 했는지 확인해야한다. 그리고 context 객체 안에 있는 contentResolver 객체를 가져온다.

ContentResolver 의 query() 함수를 통해 데이터를 끌어온다. query() 함수는 cursor를 리턴하기 때문에 cursor를 사용하여 각각의 칼럼을 가져와 데이터를 사용한다.