- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
목록Parcelable Interface (6)
드럼치는 프로그래머
public class SmsRawData implements Parcelable { byte[] data; //Static Methods public static final Parcelable.Creator CREATOR = new Parcelable.Creator (){ public SmsRawData createFromParcel(Parcel source) { int size; size = source.readInt(); byte[] data = new byte[size]; source.readByteArray(data); return new SmsRawData(data); } public SmsRawData[] newArray(int size) { return new SmsRawData[size]..
AIDL을 사용하는 서비스간 통신에 있어서 데이터의(변수) 전송은 제한적이다. 특히 컴플렉스 타입을 전송하는데에는 Parcelable 인터페이스를 구현하여야 한다. 이때, Parcelable의 역할은 안드로이드 런타임에 객체의 직렬화(serialize) 과정을 도와주는 것이다. 물론 serializable을 사용하여 직렬화하고 전송할 수 있겠지만, 안드로이드에서는 공유메모리를 활용하는, IPC(Inter-Process Communication)통신에서의 효율성을 위하여 사용자가 내부정보에 대한 사항을 직접 명시함으로서, 자바 프로세서가 클래스 내부를 일일히 처리해야하는 오버헤드를 줄여준다. 우선 AIDL에서 사용되는 자료형에 대한 참고사항은 다음과 같다. (from 안드로이드 4 실무 바이블) AIDL은..
앱을 만들다 보면 인텐트를 통해 단순히 String, int, boolean 같은 기본 타입 뿐 아니고 커스텀 클래스나 오브젝트를 다른 컴포넌트에 전달해 줘야 할 경우가 많다. 그 경우 단순히 그냥 인텐트에 putExtra() 로는 넣어줄 수가 없다. 안드로이드에서는 그런 경우를 위해 자바의 Serialization 개념과 유사한 Parcelable이라는 클래스가 있다. 먼저 이런것이 왜 필요한가 살펴보겠다. 예를 들어 다음과 같은 클래스가 있다고 하자. public class BookData { int _id; String title; String author; String publisher; int price; } 도서관리 앱에서 ListView로 화면에 표시하기 위해 ArrayList에 책들의 정보..
내가 만든 객체를 IPC를 통해 전달하려면 Parcelable Interface 를 implement 해야한다. 내가 만든 클래스가 class ProcessPrivacyInfo { String processName; byte accessInfo; } 라고 한다면 수정된 클래스는 Parcelable의 두가지 메소드 와 한가지 필드 int describeContents() void writeToParcel(Parcel dest, int flags) public static final Parcelable.Creator CREATOR 를 선언해야 한다. 수정하면 아래와 같다. import android.os.Parcel; import android.os.Parcelable; class ProcessPrivacy..
서비스란 단순히 Background에서만 동작하는 것이 Service가 아니다. Android에서 Service란 Linux에서 Daemon의 의미인 것이다. 즉, 오랫동한 수행해야될 작업을 처리하기 위한 시작점이 바로 Service이다. 서비스의 형태에는 2가지 형태가 있다. 1) Local Service로 구현하는 방법 : Service와 Service를 이용하는 Application이 항상 동일한 Process에서 작동하는 경우에 해당 한다. 이 경우에는 bindService()의 결과로 바로 해당 Service에 접근해서 원하는 API를 호출 할 수 있습니다. 2) Remote Service로 구현하는 방법 : 하지만 실제로 Service가 돌고 있는 Process가 아닌 별개의 Process에서..
안드로이드에서 Remote Service를 사용하여 서비스를 제공 할 때, 자바 기본 타입 및 안드로이드에서 허락된 타입만 사용 할 수 있습니다. 하지만, 해당 서비스에 맞는 데이터 타입이 필요한 경우도 있습니다. 이 경우는 안드로이드 프레임워크 소스에서 수정해야 하는 일이라 일반 어플 개발자는 해당사항이 없는 경우 입니다. 제가 해볼 수 있는 것은 Parcelable 인터페이스를 상속 받아 데이터 타입 클래스를 생성해서 프로세스간에 통신이 될 수 있는 타입을 정의해 보는 것이였습니다. 하지만, 빌드를 해보면 이것만으로는 aidl에서 해당 타입을 사용 할 수 없다는 메세지를 봐야만 했죠. 방법은 의외로 간단했습니다. 안드로이드 소스를 찾아보면 이와 비슷한 용도로 사용되는 클래스들이 있습니다. 그 클래스들..