2011. 7. 19. 03:46

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

츨처: http://www.androidpub.com/10481
글쓴이: 회색(http://graynote.tistory.com
)

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

1. AndroidManifest.xml에 android:sharedUserId를 지정합니다. 안드로이드는 어플리케이션 마다 리눅스 User ID를 할당하는데 sharedUserId는 서로 다른 어플리케이션에서 같은 User ID를 공유할 수 있도록 합니다. 같은 User ID를 공유하면 서로 파일등의 데이터를 공유할 수 있고 프로세스도 공유할 수 있게 됩니다. 어플리케이션은 같은 Certificate로 서명되어야만 User ID를 공유할 수 있습니다.
1.<manifest xmlns:android="http://schemas.android.com/apk/res/android"
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