Aidl 로 class 옮기기
크게
보내는 함수 .aidl 생성
보내는 함수 .java 를 parcelable 로 implement
전송하는 .aidl 에 임포트 및 in 추가
정도로 정리할 수 있다.
CGMessage.aidl (보내고자 하는 클래스)
우선 해당하는 Class 를 aidl 로 만들어야 한다
// CGMessage.aidl
package com.ahope.test_ga;
// Declare any non-default types here with import statements
import com.ahope.test_ga.CGMessage;
parcelable CGMessage;
단, 이때는 인터페이스를 의미하는 I 를 앞에 붙이면 안된다.
CGMessage.java
보내고자 하는 class 를 Parcelable 를 implement 해주어야 한다.
글면서 추가해줘야 하는 함수는
public static final Creator<CGMessage> CREATOR = new Creator<CGMessage>() {
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel parcel, int i) {
이렇게 3개가 있는데
writeToParcel은 보내는쪽에서 클래스의 멤버를 직렬화해주도록 변환해주는 기능을 하고
describeContents 는 받는쪽에서 클래스를 역직렬화하도록 변환하는 기능을 한다.
Creator 는 parcelable 객체를 생성해주는 Serializable 에서 개선된 함수이다
CreateFromParcel 은 새 인스턴스를 만드는 역할을 하고 newArray 는 지정된 크기로 클래스의 새로운 array 를 만드는 역할을 한다.
ICGService.aidl (그 클래스를 보내는 구성요소)
원하는 Class 가 포함된 Aidl 메소드를 in을 포함해서 추가한다
그리고 import 로 추가된 Class 의 패키지를 추가시켜줘야 한다.
// ICGService.aidl
package com.ahope.test_ga;
// Declare any non-default types here with import statements
import com.ahope.test_ga.CGMessage;
interface ICGService {
/**
* Demonstrates some basic types that you can use as parameters
* and return values in AIDL.
*/
int getStatus();
void setSocket(String ip);
void connect();
void disconnect();
int sendJsonStr(String jsonStr);
int sendCGMsg(in CGMessage cgmsg);
void receive();
}
보내고자하는 class 는 CGMessage 이고 이를 sendCGMsg 메소드로 보낸다
'개발 > Android Studio' 카테고리의 다른 글
[Android] aidl 로 양방향 통신하기 (0) | 2023.04.12 |
---|---|
[Android] [통신#1] activity 간 intent 로 통신하기 (0) | 2023.04.10 |
[Android] PackageManager (0) | 2023.03.25 |
[Android] activity 를 intent 로 실행하는법 (startActivity startActivityForResult) (0) | 2023.03.24 |
[Android] sharedpreference (0) | 2023.03.17 |