하나의 프로세스에서 여러 애플리케이션 실행하기



안드로이드펍에서 회색님이 올리신 글입니다. ( http://www.androidpub.com/10481 )


안드로이드는 백그라운드와 포어그라운드에서 여러 애플리케이션(Application)이 상호 연동해서 동작할 수 있게 구성되어있습니다. 문제는 어플리케이션 프로세스(Process)가 너무 자주 그리고 많이 생성되는 것은 메모리와 CPU측면에서 좋지 않습니다. 상호 연동되는 어플리케이션을 여러개 만들어서 동작시키는 것이 필요한 경우에 하나의 프로세스에서 동작하도록 지정할 수 있습니다. 이것게 처리하는 것은 매우 바람직합니다.

1. AndroidManifest.xml에 android:sharedUserId를 지정합니다. 안드로이드는 어플리케이션 마다 리눅스 User ID를 할당하는데 sharedUserId는 서로 다른 어플리케이션에서 같은 User ID를 공유할 수 있도록 합니다. 같은 User ID를 공유하면 서로 파일등의 데이터를 공유할 수 있고 프로세스도 공유할 수 있게 됩니다. 어플리케이션은 같은 Certificate로 서명되어야만 User ID를 공유할 수 있습니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.androidpub.sample"
      android:sharedUserId="androidpub.user"
      android:versionCode="1"
      android:versionName="1.0">

2. 각 애플리케이션의 Application 태그에 android:process를 같은 값으로 지정합니다.


<application android:icon="@drawable/icon" android:label="@string/app_name"
            android:process="androidpub.process.share">


유의해야할 점은 Application Process를 공유함으로써 Application Context도 공유된다는 점입니다.
그리고 어플리케이션 업데이트시에 User ID가 바뀌는 경우 기존 데이터가 리셋되는것 같습니다. 이미 퍼블리쉬된 어플의 경우 치명적일수도 있으니 주의하셔야 합니다.

레퍼런스 : http://developer.android.com/guide/topics/manifest/manifest-intro.html



by 수영사랑 | 2010/12/21 10:17 | 12/20~12/23 | 트랙백 | 덧글(0)

트랙백 주소 : http://skyswim42.egloos.com/tb/3925638
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶