일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- livedatam
- Android
- alarmanager
- Background
- jobdispatcher
- firebase
- epmty
- schedule
- shceduler
- jobschduler
- 검사
- workmanager
- Service
- 빈
- Library
- PHP
- Job
- Today
- Total
목록분류 전체보기 (163)
에몽이
안드로이드를 개발하면서 화면전환시 intent 항상 사용해왔을겁니다. 하지만 과연 intent가 어떤용도로 사용되는지 한번쯤은 생각해보셔야 할 필요가 있습니다. 아래 글에는 모든 코드를 공개하지않고 핵심적인것만을 작성하니까, 일단 2개의 안드로이드 프로젝트를 받아 설치하고 테스팅하면서 예제를 이해하는편이 쉬울겁니다. example.zip 보편적으로 intent는 액티비티를 전환할때 어떤 액티비티로 전환할지.. 또는 어떤 내용을 담아서 전달할지.. 에 중점적으로 사용하였습니다. 하지만 이런 intent에게도 사용하는 용도에 따른 명칭이 있습니다. 제목에서 보듯이 명시적 intent와 암시적 intent가 되겠습니다. 명시적 intent는 말그대로 intent를 받는 대상을 콕찝어 지정해주는 용도입니다. 암..
자바에는 크게 다음 4개의 List인터페이스의 구현체가 있다. VectorArrayListLinkedListCopyOnWriteArrayList 다른 것들은 자바 초창기때부터 있었기 때문에 어느정도 그 차이점을 알겠는데 ArrayList와 CopyOnWriteArrayList는 그 차이를 잘 모르는 경우가 많다. 일단, ArrayList는 스레드에 안전하게 설계되지 않았다. 그 덕분에 빠르기는 하지만 스레드 처리에 민감한 경우 Vector를 쓰거나 ArrayList를 쓰면서 synchroized를 적절하게 사용해야만 했다. 그러나 이러한 방식은 각각의 스레드가 과도하게 혹은 필요 이상으로 이 synchronized에 따라 멈추거나 기다려야만 하는 상황을 유발시키므로 성능에 안좋은 영향을 미치기도 한다. ..
대부분의 언어에는 Event-Driven으로 구현이 가능해지는 Future나 Promise가 존재한다. 그 중 Java와 Scala에서의 Future와 Promise를 적어보려 한다. Scala에서의 Future[T]는 '언젠가 사용 가능해지는 타입 T의 값', Promise[T]는 '언젠가 얻게 될 타입 T의 값'이라고 할 수 있다. 그래서 Future는 read-only, Promise는 writable하다고 한다. '언젠가'에 대한 행동이므로 비동기적인 처리를 뜻하고, Future를 위한 쓰레드가 필요하다. 자바 5의 Future는 위에서 이야기한 Future와 같다. Callable과 함께 추가되었던 Future는 '언젠가 가지게 되는 타입 T의 값'이다. 하지만 결과를 받아 값을 사용하기 위해서..
자바 프로그래밍을 하다보면 동시에 다른 명령을 여러 개 수행해야 하는 동시성(concurrency)작업을 해야 할 일이 많이 생깁니다. 자바에서는 이러한 동시성작업을 해야하는 멀티쓰레드 환경에서 버그 없이 작성하게 도와주는 많은 객체들이 있습니다. java.util.concurrent 패키지에는 ConcurrentHashMap, ConcurrentLinkedQueue, ConcurrentSkipListMap 등 동시성(concurrency)을 보장하는 다양한 컬랙션을 제공합니다.이번 포스팅에서는 이 중 lock을 관리하는 java.util.concurrent.locks중에서도 ReentrantLock에 대하여 살펴보려합니다. java.util.concurrent.locks의 구현체를 크게 보자면 Lock..
1. SQLiteDatabase 사용 예제에 대한 문제와 개선이전 글 [안드로이드 데이터베이스(DB) 프로그래밍 3 -SQLiteDatabase 사용 예제]에서 SQLiteDatabase 클래스를 사용하여 SQLite 데이터베이스를 다루는 예제에 대해 살펴봤습니다. SQLiteDatabase.openOrCreateDatabase() 함수를 호출하여 데이터베이스를 열고, SQLiteDatabase 클래스 객체를 확보한 다음, 데이터베이스를 다루는 함수를 사용하여 데이터를 추가하거나, 수정, 삭제 또는 조회하는 예제를 작성하였습니다. 그런데 분명 [안드로이드 데이터베이스(DB) 프로그래밍 3 -SQLiteDatabase 사용 예제]에서 작성한 예제가, SQLiteDatabase에 대한 사용법을 보여주고 있고..
Bundle은 클래스이다. 즉 여러가지의 타입의 값을 저장하는 Map 클래스이다. 자바에는 구조체가 없어서, 클래스로 이용하므로, 다른 언어의 구조체라고 생각하면 될 것 같다. 예를 들면 string 값을 Bundle 클래스에 Mapping(대응, 변환)하는 것이다. 기본타입인 int, double, long, String 부터 FloatArray, StringArrayList, Serializable, Parcelable 까지 구현한다. Serializable(객체 직렬화)는 객체를 바이트로 저장하는 자바의 인터페이스이고,Parcelable는 안드로이드에서 만든 것이다.클래스를 직렬화 하려면, 클래스에 implements Serializable 또는 implements Parcelable을 하여야 한다..
[Android/안드로이드] PowerManager 를 통해 안드로이드의 진정한 주인이 되어 봅시다. 1. Information 먼저 Developer 의 내용을 간단히 정리해주세요 - PowerManager 는 Device 의 전원 상태 ( Power state ) 를 제어할 수 있게 도와줍니다. - 단말의 배터리 사용시간은 PowerManager 의 API 사용에 따라 현저한 차이를 나타냅니다. - 반드시 필요한 경우가 아니라면 WakeLocks 을 acquire 하지 않는 것이 좋습니다. - 가능한 낮은 레벨을 사용하고 사용 후에는 반드시 release 하는 것이 좋습니다. Developer 에서 class 에 대한 소개보다도 주의사항을 더 많이 표시하고 있습니다. 이 말은, 잘만 사용하면 원하는 ..
Sticky intent 는 말 그대로 끈적끈적한 intent 를 말합니다. ^^; 끈적끈적해서 자신의 역할을 수행한 뒤에도 메모리에 딱 달라붙어서 사라지지 않고 남아있는 것이죠. 보통의 broadcast 된 intent는 자신과 관련된 모든 Broadcast receiver 를 거치고 나면 임무 완료되어 ‘즐거운 퇴근길에 올라’ 메모리 상에서 제거됩니다. 하지만 Sticky intent는 임무 완료 후에도 메모리에 남아 있는다는 사실! (정확하진 않지만 해당 event에 대한 다음 broadcast 가 있을 때까지 남아 있는 것 같습니다) 그럼 이 sticky intent를 어디에 사용할까요? 안드로이드에서 Broadcast receiver 는 두 가지 방법을 통하여 등록할 수 있습니다. 정적으로 An..
자바 1.2 버전부터 제공되고 있지만 아직 다수의 개발자들이 잘 몰라서 활용을 잘 못하는 기능이 하나 있는데, 그 기능이 바로 쓰레드 단위로 로컬 변수를 할당하는 기능이다. 이 기능은 ThreadLocal 클래스를 통해서 제공되는데, 본 글에서는 ThreadLocal 클래스의 기본적인 사용방법과 활용 방법을 살펴보도록 하겠다. ThreadLocal이란? 일반 변수의 수명은 특정 코드 블록(예, 메서드 범위, for 블록 범위 등) 범위 내에서만 유효하다. { int a = 10; ... // 블록 내에서 a 변수 사용 가능 } // 변수 a는 위 코드 블록이 끝나면 더 이상 유효하지 않다. (즉, 수명을 다한다.) 반면에 ThreadLocal을 이용하면 쓰레드 영역에 변수를 설정할 수 있기 때문에, 특정..
String null 체크를 하기 위해서 null 체크 메서드를 만들어서 사용하거나 조건문으로 null 체크를 하는 경우가 대부분인데요. 안드로이드에서는 따로 Text를 위한 Util 을 제공해 줍니다. 그 중에 isEmpty 라는 메서드가 문자열 null 체크를 해주는 녀석 입니다. TextUtils.isEmpty(CharSequence str) String 문자열을 넣으시면 리턴값이 boolean 이기 때문에 빈문자열일 경우에는 true 를 리턴해 줍니다.^^ 출처: http://arabiannight.tistory.com/entry/안드로이드Android-String-null-체크-하기 [아라비안나이트]