- 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 |
- 재능이의 돈버는 일기
- 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
- 무의식이 의식을 지배한다
목록aidl (8)
드럼치는 프로그래머
안드로이드 Activity life 사이클이 끝나면 해당 Activity는 안드로드 Activity Stack으로 부터 삭제되고, 다시 해당 Activity를 시작하면 onCreate부터 다시 시작된다. 그렇다면, 내가만든 엑티비티가 종료되어도 백그라운에서 동작하게 하고 싶다면 어떻게 할까?? 방법은 여러가지 있지만~ 일반적으로 생각해 낼수 있는 방법은 역시 Service를 실행 시키는 방법이다~ Service는 Activity와 다른 프로세스이다. 다시 말하면 전혀 다른 프로그램이라고 봐도된다. 단지 interface가 동일해 RPC로 서로 통신할 수 있는 것 뿐이다. 많은 분들이 패키지 내에 Activity와 Service를 같이 만든다해서 같은 프로세스(프로그램)으로 보는 분들이 많은데.. 절대 아..
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]..
안드로이드 서비스는 백그라운드에서 실행하는 컴포넌트로 UI가 없다(윈도우의 서비스와 유닉스 데몬과 비슷). 그리고 서비스 객체는 스레드를 자동으로 만들지 않기 때문에, 별도의 스레드로 동작시키지 않으면 서비스가 메인 스레드에서 동작한다. 서비스가 하는 일이 짧으면 상관없지만 오래 걸리는 경우에는 별도의 스레드(혹은 AsyncTask)를 사용해야 한다. 서비스는 로컬 서비스와 리모트 서비스로 구분되는데, 그중에서 리모트 서비스는 해당 애플리케이션 이외의 범위에서도 서비스를 사용할 수 있으며, 이를 위해서 AIDL(Android Interface Definition Language)를 사용한다. AIDL은 서비스를 사용하는 클라이언트에게 제공되는 인터페이스를 정의하고, 바인더로 사용할 Binder 클래스를 ..
내가 만든 객체를 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..
한 프로세스에서의 프로세스간 통신은 쉬운 것이므로 설명은 생략하고 외부 프로세스간 통신시에 사용하는 방법을 설명코자 합니다. aidl은 스텁코드를 만들고자 만드는 것이고, 스텁코드는 공유하려는 대상을 바이트로 바꿔 외부에 공개해 주는 게 주역할입니다. 다음은 프로젝트의 트리 구조입니다. 우선, AIDL의 실 구현부(서버단)과 그 구현을 사용하는 클라이언트를 만들어 보겠습니다. 1. 서버단 a) 해당 프로젝트->src 에ICalc.aidl 을 만듭니다.(이 때 패키지명 추가하고 그곳에 aidl을 넣습니다.) 패키지명과 현재 aidl의 패키지명을 같게 넣지 않으면 후에 에러가 떨어집니다. package com.android.aidldemo.aidl; interface ICalc{ int Add(in int ..
서비스란 단순히 Background에서만 동작하는 것이 Service가 아니다. Android에서 Service란 Linux에서 Daemon의 의미인 것이다. 즉, 오랫동한 수행해야될 작업을 처리하기 위한 시작점이 바로 Service이다. 서비스의 형태에는 2가지 형태가 있다. 1) Local Service로 구현하는 방법 : Service와 Service를 이용하는 Application이 항상 동일한 Process에서 작동하는 경우에 해당 한다. 이 경우에는 bindService()의 결과로 바로 해당 Service에 접근해서 원하는 API를 호출 할 수 있습니다. 2) Remote Service로 구현하는 방법 : 하지만 실제로 Service가 돌고 있는 Process가 아닌 별개의 Process에서..
App A
안드로이드에서 Remote Service를 사용하여 서비스를 제공 할 때, 자바 기본 타입 및 안드로이드에서 허락된 타입만 사용 할 수 있습니다. 하지만, 해당 서비스에 맞는 데이터 타입이 필요한 경우도 있습니다. 이 경우는 안드로이드 프레임워크 소스에서 수정해야 하는 일이라 일반 어플 개발자는 해당사항이 없는 경우 입니다. 제가 해볼 수 있는 것은 Parcelable 인터페이스를 상속 받아 데이터 타입 클래스를 생성해서 프로세스간에 통신이 될 수 있는 타입을 정의해 보는 것이였습니다. 하지만, 빌드를 해보면 이것만으로는 aidl에서 해당 타입을 사용 할 수 없다는 메세지를 봐야만 했죠. 방법은 의외로 간단했습니다. 안드로이드 소스를 찾아보면 이와 비슷한 용도로 사용되는 클래스들이 있습니다. 그 클래스들..