안드로이드

안드로이드의 네트워크 변경 확인

안드로이드 7.0부터 백그라운드 작업 최적화를 위해 몇 가지 브로드캐스트를 받을 수 없게 되었다. 이중에 네트워크 연결 상태 변경을 알리는 CONNECTIVITY_ACTION는 포함된다. 다만, (일명) AndroidManifest.xml에 미리 등록하여 PackageManager에서 관리하는 정적 브로드캐스트리시버에 한하며, Context.registerReceiver()에 등록하여 사용하는 동적 브로드캐스트리시버는 가능하다. 그럼, 정적 브로드캐스트리시버를 동적 브로드캐스트리시버로 바꾸면 될까? CONNECTIVITY_ACTION은 네트워크 상태가 변경되었다는 사실만 알려주기 때문에, 현재 네트워크 상태가 WiFi이나 […]

안드로이드의 네트워크 변경 확인 더 읽기"

안드로이드의 설정(Settings)

안드로이드는 단말에서 사용하는 설정(setting)에 관련된 정보를 Settings과 Settings 안의 클래스들을 통해 제공한다. 하지만, 안드로이드 셋팅 앱(com.android.settings)이나 시스템 앱이 아니라면 이 값을 참조하지 않거나 한 두개 정도 참조할 것이다. Settings 클래스 Settings 클래스는 설정의 하부에 포함된 메뉴로 진입할 수 있는 액션(Action)을 상수로 선언하고 있다.  이 상수를 이용하면 접근성 메뉴, 계정 메뉴, 블루투스 설정, 네트워크 설정 등의

안드로이드의 설정(Settings) 더 읽기"

안드로이드 개발 관련 도구들의 릴리즈 노트

안드로이드 스투디오에서 안드로이드 개발 환경 설정에 필요한 툴들의 업데이트를 알려주는 기능이 있다. 안드로이드 스투디오 자체 업데이트가 나오거나 Build Tool, Platform Tool 최신버전이 나오면 팝업을 통해 알려준다. 하지만, JDK나 Gradle, Gradle plugin 또는 형상관리 도구는 알려주지 않는다. 새로운 버전이 나왔거나 현재 사용하는 버전의 변경사항이 뭔지 궁금해진다면 아래의 웹사이트를 직접 방문해보자. 참조 Android Studio Release notes JDK 8

안드로이드 개발 관련 도구들의 릴리즈 노트 더 읽기"

안드로이드 잡스케줄러 주의점

targetSdk를  24 이상으로 지정한 앱은 안드로이드의 정책 변경에 따라 더 이상 CONNECTIVITY_ACTION을 전달받지 못한다. 그러므로,  CONNECTIVITY_ACTION을 통해 정기적으로 백그라운드 작업을 시작하고 있었다면 이제 잡스케줄러를 이용해야 한다. 여기서는, 브로드캐스트 리시버 대신 잡스케줄러로 변경 시 꼭 확인해야할 부분들만 골라 살펴보겠다. 1. CONNECTIVITY_ACTION 브로드캐스트 리시버를 대신해 잡을 등록하자.  앱이 시작될 때, 아래 예제처럼 잡을 등록한다. JobInfo jobInfo =

안드로이드 잡스케줄러 주의점 더 읽기"

FAILED BINDER TRANSACTION

안드로이드에서 액티비티나 서비스같은 컴포넌트 간 데이터를 전달할 때 인텐트를 쓴다. 정확히는 인텐트 객체 안의mExtras라는Bundle 형 객체를 활용하는데 이 때 전송할 수 있는 데이터의 제한이 있을까? 결론만 이야기하면 있다. 안드로이드 공식문서에 인텐트의 extras의 크기 제한으로 언급된 내용은 없지만, 일정 크기 이상의 데이터를 intent에 넣어 전달하려고 하면 아래와 같은 에러가 발생한다. 09-06 11:04:42.329 6839-6839/? E/JavaBinder: !!! FAILED

FAILED BINDER TRANSACTION 더 읽기"