2011년 10월 8일 토요일

p2) 안드로이드 앱 간 통신 내 생각.

아직 지식이 완전하지 않기 때문에 지금까지의 것들 만으로 정리를 해 보면,

앱간 통신중에 젤 좋은 방법은 Contents Provider를 이용하는 것 같다.

코드로 치면

mContext.getContentResolver().query( Uri.parse("content://com.android.email.provider/message"),
                EmailServiceContent.EmailColumns.every, "mailboxkey in (select _id from Mailbox where type=0)", null, ORDER_BY);

요런 것들.

Email이 CP를 제공하면 해당 내용을 쿼리해서 다 땡겨 올 수가 있다.

임의로 만든 Parcelable한 자료의 경우(자바에선 Serializable) aidl을 이용하는게 좋은데 이건 좀 번거롭다. 패키징을 하거나 패키징을 보내거나 받는 쪽에 코드들이 모두 들어가야 하니까.

뭐 aidl에 간단히

interface IEmailContent {
}

요렇게만 써주면 java 을 gen 폴더에 생성하면서 하위단이랑 통신할 수 있는 부분은 스스로 작성을 해 주긴 하지만 생성된 해당 stub 함수를 또 컨트롤 해 줘야 한다.

그리고 가장 간단한 건. intent를 이용하는 거다. 해당앱이 죽지 않고 백그라운드로 살아 있는 경우에는 AndroidManifest.xml에 등록된 Activity들도 같이 살아 있는 것이다.

    mMiniEmailService.startActivity(new Intent(
      "android.intent.action.SHROTCUT")

요런식으로 인텐트만 날려서 해당 Activity들을 살려만 주면 해당 앱을 살려낼 수 있다.
뭐 인텐트 날릴 때 인자 넣어주면 것도 통신인데 관련 신호는 간단히 하고 받은 쪽에서
복잡한 코드를 구현하면 또한 좋은 방법이 아닐까 한다.

사실 프로젝트가 커지면 어디서 뭘 구현하든 품질이야 어떻든 빨리만 구현하면 되는거다. 왜냐면 데이트도 하고 게임도 해야 하니까.

다만 앱간 통신에서도 관련 기술을 알고 좀 더 객체지향적으로 생각을 하고 있는게 코드의 중구난방률을 낮출 수 있지 않을까 생각해 본다.

흠... 나름 정리하고 나니까 내가 짠 앱도 다시 보이는군.

핸들러도 있는데 핸들러도 잘 써봐야 할텐데... 흐흐.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...