728x90
전체 글

전체 글

    [Android] 안드로이드 정리 (9) - 액티비티의 생명주기

    출처 : Do it! 안드로이드 앱 프로그래밍 / 정재곤 Activity란? 액티비티란 사용자에게 UI가 있는 화면을 제공하는 앱 컴포넌트이다. 모바일 앱을 켰을 때 디스플레이에 보여지는 화면이라고 생각하면 된다. 앱은 보통 여러개의 액티비티로 이루어져 있고, 일반적으로 하나의 메인 액티비티를 갖고 있다. 일반적으로 앱을 처음 실행했을 때 보여지는 것이 메인 액티비티이다. 액티비티가 또 다른 액티비티를 실행하게 되면 이전의 액티비티는 정지되지만, '백스택'이라고 불리는 스택에 저장해두기 때문에 없어지지는 않는다. 액티비티의 상태가 변경되면 상황에 따라 네트워크나 데이터베이스 관련 객체와 같이 덩치가 큰 객체들은 해제하는 것이 좋다. 액티비티가 다시 화면에 보여질 때 필요한 리소스들을 다시 가져와서 중지되..

    [Android] 안드로이드 정리 (8) - 플래그와 부가 데이터 사용하기

    출처 : Do it! 안드로이드 앱 프로그래밍 / 정재곤 액티비티로 만든 화면이 한 번 메모리에 만들어졌는데도 계속 startActivity()나 startActivityForResult() 메소드를 여러 번 호출하면 동일한 액티비티가 메모리에 여러 개 만들어질 것이다. 중복된 액티비티를 띄우지 않으려면 어떻게 해야 할까? 이런 문제는 플래그(Flag)를 사용하면 조정할 수 있다. 플래그 플래그를 이해하려면 액티비티가 처리되는 방식을 이해해야 한다. 액티비티는 액티비티 매니저(ActivityManager)라는 객체에 의해 액티비티 스택(Activity Stack)이라는 것으로 관리된다. 다음 그림은 액티비티 스택의 처리 과정을 나타낸 것이다. 이렇게 일반적인 스택 구조를 이용해 액티비티가 관리되기는 하지..

    [Android] 안드로이드 정리 (7) - 인텐트(Intent)

    출처 : Do it! 안드로이드 앱 프로그래밍 / 정재곤 인텐트(Intent)란? android.content 패키지 안에 정의되어 있는 인텐트는 앱 구성 요소 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 다른 앱 구성 요소에 인텐트를 전달할 수 있는 대표적인 메소드는 다음과 같다. startActivity() 또는 startActivityForResult() : 액티비티를 화면에 띄울 때 사용한다. startService() 또는 bindService() : 서비스를 시작할 때 사용한다. broadcastIntent() : 인텐트 객체를 브로드캐스팅 방식으로 전송할 때 사용한다. 이 메소드들을 호출할 때 인텐트가 파라미터로 전달되며 이렇게 전달된 파라미터는 앱 구성요소인 액티비티, 서비스, 브..

    [Android] 안드로이드 정리 (6) - 여러 화면 만들고 화면 간 전환하기

    출처 : Do it! 안드로이드 앱 프로그래밍 / 정재곤 안드로이드 앱의 네 가지 구성 요소로는 액티비티(Activity), 서비스(Service), 브로드캐스트 수신자(Broadcase Receiver), 내용 제공자(Content Provider)가 있다. 이러한 정보들은 AndroidManifest.xml 파일에 저장된다. 이 파일 안에는 위의 네 가지 구성 요소 외의 앱에 대한 다양한 정보가 들어간다. 만약 새로운 액티비티를 만들어 앱에 추가한다면 이 매니페스트 파일에 새 액티비티 정보를 추가해야 한다. 액티비티를 소스코드에서 띄울 때는 startActivity() 메소드를 사용한다. 하지만 어떤 액티비티를 띄운 것인지, 그리고 띄웠던 액티비티로부터 다시 원래의 액티비티로 돌아오면서 응답을 받아 ..

    [Android] 안드로이드 정리 (5) - 레이아웃 인플레이션 이해하기

    출처 : Do it! 안드로이드 앱 프로그래밍 / 정재곤 지금까지는 하나의 화면에 대하여 화면을 어떻게 보여줄지 결정하는 XML 레이아웃을 정의했다. 하지만 XML 레이아웃만 만들었다고 화면을 띄우고 앱을 실행할 수는 없다. 화면의 기능을 담당하는 소스 코드 파일이 필요하다. 그런데 두 개의 XML 레이아웃 파일과 하나의 소스 코드 파일만 있다면 어떤 XML 레이아웃 파일이 소스 파일과 연결되는 지 어떻게 알 수 있을까? 다음은 새 프로젝트를 만들 때 만들어지는 소스 파일(MainActivity.java)에 자동으로 입력된 소스다. package com.example.project00_java; import androidx.appcompat.app.AppCompatActivity; import andro..

    [Android] 안드로이드 정리 (4) - 토스트, 스낵바, 대화상자, 프로그레스바

    출처 : Do it! 안드로이드 앱 프로그래밍 / 정재곤 토스트 토스트는 간단한 메시지를 잠깐 보여주었다가 없어지는 뷰로 앱 위에 떠 있는 뷰라고 할 수 있다. 토스트 메시지를 만들어서 보여주는 방법은 다음과 같다. Toast.makeText(Context context, String message, int duration).show(); 토스트는 위치나 모양을 바꿀 수 있는데 다음의 두 메소드로 토스트의 위치와 여백을 지정할 수 있다. public void setGravity(int gravity, int xOffset, int yOffset) public void setMargin(float horizontalMargin, float verticalMargin) > 토스트 위치 바꿔주기 예제 publ..

    [Android] 안드로이드 정리 (3) - 이벤트 처리

    출처 : Do it! 안드로이드 앱 프로그래밍 / 정재곤 이벤트 처리 방식 버튼 태그에 onClick 속성을 추가하면 버튼을 클릭했을 때 발생하는 이벤트를 처리할 수 있다. 다른 방식으로는 XML이 아니라 소스 코드에서 setOnClickListener() 메소드를 이용해 클릭 이벤트를 처리하는 방식이다. 이와 같은 이벤트 처리 방식은 화면에서 발생하는 이벤트를 버튼과 같은 위젯 객체에 전달한 후 그 이후의 처리 과정을 버튼에 위임한다고 해서 '위임 모델'이라고 부른다. 위임 모델은 각각의 이벤트를 처리할 수 있는 리스너(Listener) 인터페이스를 등록할 수 있어야 한다. 다음은 대표적인 이벤트 처리 메소드이다. boolean onTouchEvent (MotionEvent event) boolean..

    [Android] 안드로이드 정리 (2) - 기본 위젯과 드로어블

    출처 : Do it! 안드로이드 앱 프로그래밍 / 정재곤 TextView 텍스트뷰는 화면을 구성할 때 가장 많이 사용되는 기본 위젯이다. 텍스트뷰는 화면에서 글자를 보여주는 역할을 한다. > text 텍스트뷰의 문자열을 설정할 수 있다. text 속성 값으로 직접 문자열을 넣는 방법과 /app/res/values 폴더의 strings.xml 파일에 작성한 문자열을 지정하는 방법이 있다. 다국어 지원을 위해 strings.xml 파일을 사용하는 것이 좋다. 다국어를 지원할 때는 /app/res/values-en/strings.xml 이런 식으로 파일을 관리한다. strings.xml 파일에 정의된 문자열은 text 속성에서 @string/... 와 같은 형식으로 참조해야 한다. > textColor 텍스트..

728x90