액티비티

    [Do it! 안드로이드 앱 프로그래밍 #17] 서비스

    17 서비스 앱이 실행되어 있다고 해서 항상 화면이 보이는 것은 아니다. 예를 들어, 카카오톡은 앱이 실행되어 있지 않거나 화면이 사용자에게 보이지 않는 상태에서도 다른 사람이 보낸 메시지를 받을 수 있다. 이는 화면 없이 백그라운드에서 실행되는 서비스(Service)가 있기 때문이다. 화면 뒤의 공간을 뒷단 또는 백그라운드라고 부른다. 서비스도 앱의 구성 요소이기 때문에 매니페스트 파일에 꼭 등록해야 한다. 17-1 서비스의 실행 원리와 역할 서비스를 실행하려면 메인 액티비티에서 startService 메서드를 호출하면 된다. 서비스는 실행된 상태를 계속 유지하기 위해 서비스가 비정상적으로 종료되더라도 시스템이 자동으로 재실행한다. 서비스를 시작시키기 위해 startService 메서드를 호출할 때 인..

    [Do it! 안드로이드 앱 프로그래밍 #12] 프래그먼트로 화면 만들기

    12 프래그먼트로 화면 만들기 저번 글에서는 하나의 액티비티에 하나의 프래그먼트가 들어가도록 만들었다면, 이번 글에서는 하나의 액티비티에 두 개의 프래그먼트가 들어가도록 만들어볼 것이다. 화면의 위쪽과 아래쪽을 나눈 후 위쪽에는 이미지 선택이 가능한 리스트가 보이는 프래그먼트를 만들어 넣고 아래쪽에는 선택된 이미지가 보이는 프래그먼트를 만들어 넣는다. 우선, 순서를 간단하게 요약해보겠다. 자세한 설명은 소스 코드와 그 밑의 설명을 참고하길 바란다. [XML 레이아웃] ① 첫 번째 프래그먼트를 위한 XML 레이아웃 fragment_list.xml을 만들고 세 개의 버튼을 추가한다. ② 두 번째 프래그먼트를 위한 XML 레이아웃 fragment_viewer.xml을 만들고 이미지뷰를 추가한다. ③ 메인 액티..

    [Do it! 안드로이드 앱 프로그래밍 #11] 프래그먼트란?

    11 프래그먼트란? 11-1 프래그먼트에 대해 이해하기 여러 개의 화면을 구성할 때는 보통 각각의 화면을 액티비티로 만든 후 액티비티를 전환하는 방법을 사용한다. 그런데 화면의 일부분을 다른 화면으로 구성하고 싶을 때는 어떻게 해야 할까? ① 리니어 레이아웃 안에 다른 레이아웃을 추가하고 각각의 레이아웃 안에 필요한 뷰를 넣는다. ② 프레임 레이아웃 안에 여러 개의 레이아웃을 넣어 중첩시킨 후 가시성 속성을 설정한다. ③ 하나의 액티비티 안에 여러 개의 액티비티를 부분 화면으로 설정한다. 위 세 가지 방법은 이전 게시글에서 배웠다. 방법 ①은 코드가 복잡해지는 문제가 있고, 방법 ②는 다른 액티비티에서 사용하려 할 때 동일한 레이아웃을 중복해서 만들어야 하는 문제가 있다. 방법 ③은 시스템에서 액티비티를..

    [Do it! 안드로이드 앱 프로그래밍 #10] 태스크 관리, 액티비티 수명주기 이해하기

    10-1 태스크 관리 이해하기 앱을 실행하면 그 앱은 하나의 프로세스 위에서 동작한다. 예전 글에서 앱에서 시스템으로 인텐트를 보내는 방법으로 전화 앱을 띄워보았다. 이렇게 하면 두 앱은 별도의 프로세스로 동작하게 된다. 그런데 프로세스는 독립적인 상자와 같아서 프로세스 간의 정보 공유는 어렵다. 그래서 앱에는 태스크(Task)라는 것이 만들어지고, 태스크가 전화 앱에서 [BACK] 키를 누르면 다시 원래의 앱 화면으로 돌아올 수 있게 해준다. 10-1-1 프로세스와 태스크 시스템은 알아서 태스크를 관리하지만 직접 제어해야 하는 경우도 생긴다. 매니페스트 파일(AndroidManifest.xml)에 액티비티를 등록할 때 태스크도 함께 설정할 수 있다. ▼ 액티비티의 launchMode 속성을 추가하고 값..

    [Do it! 안드로이드 앱 프로그래밍 #9] 인텐트, 플래그 그리고 부가 데이터 사용하기

    09-1 인텐트 살펴보기 바로 앞 실습에서 인텐트는 다른 액티비티를 띄우거나 기능을 동작시키기 위한 수단으로 사용했다. 즉, 무언가 작업을 수행하기 위해 명령하거나 데이터를 전달하는 데 사용했다. 이 과정을 조금 더 자세히 설명하면 인텐트를 만든 후 startActivity나 startActivityForResult 메서드를 호출하면서 인텐트를 시스템에 전달했다. 그러면 시스템은 그 인텐트 안에 들어 있는 명령을 확인하고 액티비티를 띄운 것이다. 9-1-1 인텐트의 역할과 사용 방식 .android.content 패키지 안에 정의되어 있는 인텐트는 앱 구성 요소 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 안드로이드 앱의 구성 요소는 네 가지로, 액티비티(Activity), 서비스(Service..

    [Do it! 안드로이드 앱 프로그래밍 #8] 여러 화면 만들고 화면 간 전환하기

    08 여러 화면 만들고 화면 간 전환하기 대부분의 앱은 여러 화면으로 구성되어 있고 화면을 전환하며 실행된다. 그리고 화면은 액티비티로 구현한다. 액티비티를 소스 코드에서 띄울 때는 startActivity 메서드 또는 startActivityForResult 메서드를 사용한다. startActivity 메서드는 액티비티에서 새 액티비티를 띄우기만 할 때 사용하고, startActivityForResult 메서드는 새 액티비티에서 원래의 액티비티로 돌아오면서 새 액티비티의 응답을 받아 처리해야 하는 경우에 사용한다. app > 우클릭 > New > Activity > Empty Activity > Activity name 입력 > Finish XML 파일과 소스 코드 파일이 두 개씩 만들어졌다. 하나의 ..