본문 바로가기
[android] Chrome Custom Tabs - 기존에 특정 web page 를 보여주기 위해서는 external browser 에 의존하거나 internal WebView 를 활용하는 방법만 있었다.external browser 는 많은 기능을 support 하며 state 를 share 한다는 장점이 있지만, context switch 적 성격이 강하며 customize 하기 어렵다.internal WebView 의 경우 반대로 context switch 적 성격이 약하고, customize 하기는 쉽지만, state 를 share 하지 못하고, standard 를 맞춰 support 하기 어렵워 많은 공수가 든다는 단점이 있다. external browser (chrome) 만큼의 호환성을 갖춘 “Custom Tabs” 라는 것이 suppor.. 2019. 1. 26.
[android] Snackbar 를 써보자 -com.android.support:design:27.1.0 부터 사용 가능하며, BaseTransientBottomBar 를 상속한다 -1개의 버튼과 함께 메시지를 전달할 수 있는 형태의 Toast 라고 보면 될 듯 싶다.한번에 하나만 표시 가능하며, Z 축 기준 최상단에 그려진다. 제거 방법 1. timeout 후에 자동제거2. 새로운 surface 나 activity 가 등장할 때 자동 제거3. user 가 swipe 로 제거 표시 위치 작은 단말(폰) : 스크린 하단에 표시큰 단말(테블릿) : 왼쪽 하단에 표시 Callbacks 버튼에 대한 설정은 setAction(CharSequence buttonText, View.OnClickListener listener) 를 통해 한다.Snack 가 등.. 2019. 1. 20.
[android] NoClassDefFoundError for SafeBrowsingResponse [android] NoClassDefFoundError for SafeBrowsingResponse -아래와 같은 로그를 보았다. (@ 26(8.0 OOS) device, targetSDK 23(6.0 MOS) )그래서 research 를 해보았다.I/zygote64: Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/webkit/SafeBrowsingResponse; at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (PG:53) at .. 2018. 11. 30.
[SQLite3] 04. SQLite3 C API 기초 [SQLite3] 04. SQLite3 C API 기초 이 글은 "빠르게 활용하는 모바일 데이터베이스 SQLite3” 이란 글을 보며 필요한 내용만 정리한 글입니다.자세한 내용은 책을 구매해서 보세요 1. 데이터베이스 연결 -SQLIte3 을 사용하려면 연결(connection)을 여는(open) 과정이 필요하다.이를 위해 제공되는 함수는 sqlite3_open() 이다.첫번째 인자는 db name, 두번째 인자는 출력인자로 db handle 을 전달한다.성공시 SQLITE_OK 가 그렇지 않으면 에러값이 발생한다. -연결을 닫는 함수는 sqlite3_close() 이다.인자로 입력인자로 db handle 을 넣는다.성공시 SQLITE_OK 가 그렇지 않으면 에러값이 발생한다. -sqlite3_errms.. 2018. 5. 20.
Efficient Android Threading #11 AsyncQueryHandler 를 이용한 콘텐트 프로바이더 접근 Efficient Android Threading #11 AsyncQueryHandler 를 이용한 콘텐트 프로바이더 접근 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용. 13.1. 콘텐트 프로바이더에 대한 간략한 소개 -AsyncQueryHandler 는 ContentProvider 에서 비동기적 CRUD 작업 처리를 전문으로 하는 유틸 클래스이다.작업은 별도 스레드에서 실행되고, 결과가 사용 가능할 때는 콜백이 시작하는 스레드에서 호출된다.AsyncQueryHandler 클래스는 UI 스레드에서 CP 로 작업을 떠넘기는데 사용되고, UI 스레드는 백그라운드 태스크가 완료되면 결과를 수신한다. 13.2. 콘텐트 프로바이더.. 2018. 3. 27.
Efficient Android Threading #8 AsyncTask 로 백그라운드 태스크를 UI 스레드에 묶기 Efficient Android Threading #8 AsyncTask 로 백그라운드 태스크를 UI 스레드에 묶기 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용.10.1. 기본 사항 -AsyncTask 는 실행이 완료되면 다시 실행할 수 없다.즉, execute 메서드는 일회성의 동작이고 스레드의 동작처럼 AsyncTask 인스턴스마다 오직 한 번만 호출할 수 있다. -doInBackground 작업이 끝나면 onPostExecute 혹은 onCancelled 둘 중 하나만 수행된다. ** 10.1.1 생성과 시작 -AsyncTask 의 기본 생성자는 UI 스레드에서 호출되어야 한다.젤리빈 이전의 플랫폼에서 UI 스레드가.. 2018. 3. 24.
Efficient Android Threading #5 기본 스레드의 생명주기 관리 Efficient Android Threading #5 기본 스레드의 생명주기 관리 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용.7.1. 기본 사항 ** 7.1.1. 생명주기 -스레드는 다음의 생명 주기를 갖는다. 생성 : 스레드를 생성한 스레드와 동일한 우선순위로 할당된다.실행 : start() 가 호출될 때 실행 환경이 설정되고 실행될 준비가 된다. 이후 스케줄러가 이 스레드를 선택하면 run 메서드가 호출된다.차단/대기 : sleep(), yield() 등이 수행되었을 때이다.종료 : run 메서드가 종료된 상태이다. 최종상태에며 Thread 인스턴스나 실행 환경은 재사용 할 수 없다. ** 7.1.2. 인터럽트 -.. 2018. 3. 21.
Efficient Android Threading #3 프로세스 간 통신 Efficient Android Threading #3 프로세스 간 통신 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용. 5.1. 안드로이드 RPC -안드로이드의 변형 리눅스 커널 안에서, 리눅스 IPC 기술은 프로세스 사이의 RPC 메커니즘을 수행하는 바인더 프레임워크로 대체되었다.이를 통해 클라이언트 프로세스는 마치 로컬에서 메서드를 실행하듯 서버 프로세스의 원격 메서드를 호출할 수 있다. -RPC 메서드 호출 자체는 단순하지만, RPC 매커니즘의 하부는 다음과 같은 단계로 구성된다. 1. 메서드 데이터 분해(마샬링, marshalling)2. 원격 프로세스로 마샬링된 정보를 전송3. 원격 프로세스에 정보를 재구성(언마.. 2018. 3. 19.
Efficient Android Threading #2 스레드 통신 Efficient Android Threading #2 스레드 통신 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용. 4.1. 파이프 -파이프는 두 개의 연결된 스레드끼리만 접근할 수 있는 메모리에 할당된 버퍼다.두 개의 스레드 이외의 다른 스레드는 데이터에 접근할 수 없다.따라서 스레드 안전이 보장된다.파이프는 단방향이기 때문에 한 스레드는 쓰기만 하고 다른 하나는 읽기만 한다. 일반적으로 파이프는 두 개의 긴 실행 테스크가 있고 하나의 테스크에서 다른 테스크로 계속해서 데이터를 옮길 때 사용된다. -파이프는 바이너리 데이터와 문자 데이터 중 하나를 전송할 수 있다.PipedOutputStream(생산자)와 PipedInp.. 2018. 3. 18.
반응형