안드로이드 스튜디오/Java 15

안드로이드 스튜디오: 컨텐츠 제공자 (Content Provider)

안드로이드의 4대 컴포넌트중 4번째 컨텐츠 제공자에대해 알아보겠습니다. • Content provider • 안드로이드의 보안 정책은 각 앱의 데이터를 다른 앱이 접근 X • 유일하게 허용하는 접근 방법이 컨텐트 프로바이더 https://developer.android.com/guide/topics/providers/content-provider-creating?hl=ko 콘텐츠 제공자 생성 | Android 개발자 | Android Developers 콘텐츠 제공자 생성 콘텐츠 제공자는 중앙 리포지토리로의 데이터 액세스를 관리합니다. Android 애플리케이션에서는 제공자를 하나 이상의 클래스로, 매니페스트 파일에 있는 요소와 함께 구현 developer.android.com 카카오톡이나, 트위터같은 ..

안드로이드 스튜디오: 브로드캐스트 리시버(BroadCast Reciver)

이번 포스팅은 안드로이드 4대 컴포넌트의 3번째 브로드캐스트 리시버를 알아보고 구현해봅시다. • Broadcast Receiver • 시스템 event 수신 • 저전력 모드, booting 이벤트, SD 카드 탈부착, Wi-Fi 접속 등 • 다른 application의 메시지 수신 • Application 간의 소통 창구 https://developer.android.com/guide/components/broadcasts?hl=ko 브로드캐스트 개요 | Android 개발자 | Android Developers 브로드캐스트 개요 Android 앱은 Android 시스템 및 기타 Android 앱에서 게시-구독 디자인 패턴과 유사한 브로드캐스트 메시지를 받거나 보낼 수 있습니다. 관심 있는 이벤트가 발생..

안드로이드 스튜디오 : 서비스(Service)

이번 포스팅에선 안드로이드 스튜디오 4대 컴포넌트중 하나인 서비스를 알아보겠다. 서비스는 무슨일을 할까? • 액티비티와 상관 없이 백그라운드에서 동작하는 component • 서버로부터 contents 다운로드 • 멜론/지니 • DB에 저장 • Wi-Fi, BLE 연결 안드로이드 서비스를 만드는법 생성시에 이런 화면이 나타난다. 첫번째 사진처럼 생성시에 Service로 만들면 AndroidManifest에 자동으로 서비스가 등록된다. onCreate() 서비스가 처음 생성되었을 때(즉 onStartCommand(),onBind()를 호출하기 전) 호출되어 일회성 설정 절차를 수행 서비스가 이미 실행중인 경우, 호출되지 않음 onStartCommand() 구성 요소가 서비스를 시작하도록 요청하는 경우 호출..

안드로이드 스튜디오 : SQLite 사용

안드로이드 환경에서 데이터베이스를통해 데이터를 관리하는방법을 알아보려고한다. RDBMS (관계형 데이터베이스 관리 시스템) 이 많이 존재한다. MySql , Oracle, MariaDB, SQLite... 등등 그중에서 SQLite를 사용하여 데이터베이스를 관리해보도록 하기로했다. https://do.co/3kD2Ybd SQLite vs MySQL vs PostgreSQL: A Comparison Of Relational Database Management Systems | DigitalOcean This article compares and contrasts three of the most widely implemented open-source RDBMSs: SQLite, MySQL, and Postg..

안드로이드 스튜디오 : 데이터 파일 처리하기

이번 포스팅은 안드로이드로 파일을 쓰고, 불러오는 파일 처리기능을 알아보겠습니다. 데이터를 저장 , 관리를 하는방법은 다양한 방법이 있습니다. 1.파일 기반 2.Shared preferences 3.Database 이번에 3가지방법을 모두 다뤄보겠습니다. 파일기반으로 데이터 저장, 관리하기 파일을 생성하여 데이터를 저장하려면 openFileOutput() 메소드를 사용하면된다. 반환값으로 FileOutputStream이 반환된다. openFileOutput의 name파라미터는 파일명의 이름을, 두번째 파라미터로 쓰는 방식을 설정한다. Context.Mode_Private가 무엇일까? 파일을 생성하는 default모드고, 선언한 어플리케이션만 접근할수있는 모드다. -> outputStream.write()..

안드로이드 쓰레드(Thread2) Handler 사용

저번에 멀티쓰레드를 사용해서, CalledFromWrongTrheadException이 발생했다. 이 오류는 서브 쓰레드가, 메인쓰레드의 UI를 조작하려들기때문에 발생하는오류다. 이번포스팅은 이 오류를 고쳐보겠다. UI를 조작하려드는걸 막기위해서는 조작은 메인이하게 남겨두고, 서브쓰레드에선 조작할 값만 넘겨받으면된다. 이 기능을 용이하게 해주는것이 Thread 간 통신 방법 • Handler • AsyncTask • Deprecated in API level 30 (version R) • Customized Handler • RxJava (자바) • Coroutines (코틀린) 방법들이있다. 이중에서 제일 기본적인 Handler를 사용해 보겠습니다. Handler가 돌아가는 형태다. 메인쓰레드: Han..

안드로이드 Thread (1)

쓰레드 이전에 멀티 태스킹에 대해 알아야한다. 멀티태스킹이란? 하나의 응용프로그램이 여러작업을 동시에 처리한다. EX) 파일을 다운로드하면서 웹서핑,노래듣기,동영상보기 멀티태스킹엔 멀티프로세스, 멀티 쓰레드가 존재한다. 멀티프로세스: 프로세스와 프로세스 간의 상호작용+ 동시적으로 프로세스 처리 멀티스레드: 하나의 프로세스 안에서 쓰레드간의 상호작용 + 동시적으로 쓰레드 처리 이번 포스팅은 멀티 쓰레드에대해 다뤄볼것이다. 쓰레드를 하나 생성하려면, 두가지 방법이있다. Java.lang.Thread 클래스를 이용하는 경우 • Java.lang.Runnable 인터페이스를 이용하는 경우 다양한 기능을 안쓰고, 단일 쓰레드를 생성하려면, Thread 클래스를 이용하지만, 다양한 참조를 쓰려면 Runnable 인..

Activity - 쌍방향 액티비티 구현

지난글에는 Intent를 이용하여, 단방향 액티비티 즉 한쪽으로만 정보를 보냈지만 이번에는 서로 주고받는 쌍방향 액티비티를 구현해보겠습니다. 기본적으로 버튼1개와, EditText 2개를 생성합시다. intent는 SecondActivity로 보내고, editText의 정보 2개를 보냅니다. 단방향과 달라진점은 startActivityForResult와, 두번째 파라미터인 requestCode인 점인데요, 이 requestCode는 상호작용하기위한 일종의 Key값이됩니다. 세컨드 액티비티에선 editText로보낸 정보 2개를 getIntExtra로 받습니다. (숫자값을받을거라) getIntExtra는 defaultValue까지 입력해주셔야합니다. 값1과 값2를 받았으면, 버튼을 눌럿을때, 다시 메인 액티..

Activity 추가하기 - Intent

Activity를 추가로 생성하기전에, 안드로이드 4대 컴포넌트에 대해 알아보자. 1.Activity: 화면을 구성하는 가장 기본적인 component • 사용자와의 inter-action • 위젯들의 playground 2.Service 액티비티와 상관 없이 백그라운드에서 동작하는 component • 서버로부터 contents 다운로드 • 멜론/지니 • DB에 저장 • Wi-Fi, BLE 연결 3.Broadcast Receiver • 시스템 event 수신 • 저전력 모드, booting 이벤트, SD 카드 탈부착, Wi-Fi 접속 등 • 다른 application의 메시지 수신 • Application 간의 소통 창구 4.Content Provider • Applications들 간 공유 DB • ..

안드로이드 스튜디오:레이아웃(Constraint Layout 기본 2)

이번 포스팅은 ConstraintLayout의 Chain , goneMargin, guideline, barrier 을 소개하겠습니다. Chain 설정 Chain 기능을 이용하시면, 여러개의 버튼을 그룹화 해서 단 하나의 메소드로 손쉽게 설정이 가능합니다. app:layout_constraintHorizontal_chainStyle="" app:layout_constraintVertical_chainStyle="" Chain에는 3개의 형식이 있습니다. chainStyle : spread chainStyle : packed spread_inside spread 속성은 일정한 간격으로 버튼들을 배치합니다. packed 속성은 버튼들을 모아줍니다. spread_inside 속성은 버튼들을 가능한 최대한 일정..