2012-02-23 58 views
0

我有以下幾點:在同一個進程中運行應用程序和小部件?

  1. 稱爲APP1應用程序
  2. 一個可選的應用程序稱爲APP 2(相同的用戶名和證書APP1它有「親」功能和用戶額外權限,可以選擇是否安裝。或不)。
  3. 控件提供

是否有可能運行在同一個JVM實例,這樣我可以在它們之間共享的全局變量和同步鎖定所有三個?

我搜索了四周,但仍然困惑着,小組件提供者是否總是在與應用程序相同的JVM實例中運行。任何澄清或指針將不勝感激。

回答

3

我搜索了四周,但仍然困惑着,小組件提供者是否總是在與應用程序相同的JVM實例中運行。

應用程序小部件將以與定義應用程序小部件提供程序的APK中其餘組件相同的過程運行。

一個可選的應用程序稱爲APP 2(相同的用戶名和證書APP1。它有「親」功能和用戶額外的權限便可以選擇是否安裝與否)。

這是不推薦的。 android:sharedUserId是一個脆弱的構造,主要設計用於固件應用程序。基本上你可以從來沒有更改此值,而不鎖定所有安裝的用戶從他們現有的應用程序文件(如數據庫)。

是否有可能在同一個JVM實例中運行所有這三個,以便我可以在它們之間共享全局變量和同步鎖?

因爲每個APK都有它自己的類加載器,所以你不能輕易地在它們之間共享靜態數據成員(a.k.a.,全局變量)。

+0

謝謝commonsware。最後的評論(不同的類加載器)是否也適用於小部件提供程序和單個應用程序? – user1139880 2012-02-24 21:18:44

+0

@ user1139880:不,因爲它們在同一個APK中。 – CommonsWare 2012-02-24 21:28:17

1

這是不正確的「一個應用程序部件將在同一個進程中運行」。應用程序小部件在主屏幕進程中運行。或者在工作中不在用戶進程中。這就是您需要使用遠程視圖訪問和更新應用窗口小部件視圖的原因之一。

相關問題