안드로이드
하나의 프로세스에서 여러 애플리케이션 실행하기
raulyo
2012. 2. 13. 13:56
안드로이드는 백그라운드와 포어그라운드에서 여러 애플리케이션(Application)이 상호 연동해서 동작할 수 있게 구성되어있습니다. 문제는 어플리케이션 프로세스(Process)가 너무 자주 그리고 많이 생성되는 것은 메모리와 CPU측면에서 좋지 않습니다. 상호 연동되는 어플리케이션을 여러개 만들어서 동작시키는 것이 필요한 경우에 하나의 프로세스에서 동작하도록 지정할 수 있습니다. 이것게 처리하는 것은 매우 바람직합니다.
1. AndroidManifest.xml에
android:sharedUserId를 지정합니다. 안드로이드는 어플리케이션 마다 리눅스 User ID를 할당하는데 sharedUserId는 서로 다른 어플리케이션에서 같은 User ID를 공유할 수 있도록 합니다. 같은 User ID를 공유하면 서로 파일등의 데이터를 공유할 수 있고 프로세스도 공유할 수 있게 됩니다. 어플리케이션은 같은 Certificate로 서명되어야만 User ID를 공유할 수 있습니다.
2.
package
=
"com.androidpub.sample"
3.
android:sharedUserId
=
"androidpub.user"
4.
android:versionCode
=
"1"
5.
android:versionName
=
"1.0"
>
2. 각 애플리케이션의 Application 태그에
android:process를 같은 값으로 지정합니다.
1.
<
application
android:icon
=
"@drawable/icon"
android:label
=
"@string/app_name"
2.
android:process
=
"androidpub.process.share"
>
유의해야할 점은 Application Process를 공유함으로써 Application Context도 공유된다는 점입니다.
그리고 어플리케이션 업데이트시에 User ID가 바뀌는 경우 기존 데이터가 리셋되는것 같습니다. 이미 퍼블리쉬된 어플의 경우 치명적일수도 있으니 주의하셔야 합니다.
레퍼런스 :
http://developer.android.com/guide/topics/manifest/manifest-intro.html