2011. 7. 19. 03:46
[펌] 하나의 프로세스에서 여러 애플리케이션 실행하기
2011. 7. 19. 03:46 in 3. Implementation/Android
츨처: 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를 공유할 수 있습니다.
2. 각 애플리케이션의 Application 태그에 android:process를 같은 값으로 지정합니다.
유의해야할 점은 Application Process를 공유함으로써 Application Context도 공유된다는 점입니다.
그리고 어플리케이션 업데이트시에 User ID가 바뀌는 경우 기존 데이터가 리셋되는것 같습니다. 이미 퍼블리쉬된 어플의 경우 치명적일수도 있으니 주의하셔야 합니다.
레퍼런스 : http://developer.android.com/guide/topics/manifest/manifest-intro.html
글쓴이: 회색(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