JB2中最明顯的變化是加入了支援多賬戶,為了搞清楚多賬戶的功能對每個apk的影響,我主要測試了IME和Calendar兩個功能,現將兩者的測試結果記錄如下:IME方面:1.進入settings的input&language選項設定語言,如果當前有多個使用者的話,此時會彈出對話方塊“此改變將影響所有使用者”,意思是語言是所有使用者共用的,如果使用者A將語言設定為英文,那麼B使用者登入後,語言也變化為英文。這個是由\packages\apps\Settings\src\com\android\settings\LocalePicker.java 檔案中的如下code來控制的: public voidonLocaleSelected(final Locale locale) { if(Utils.hasMultipleUsers(getActivity())) { mTargetLocale = locale; showDialog(DLG_SHOW_GLOBAL_WARNING); } else { getActivity().onBackPressed(); LocalePicker.updateLocale(locale); }紅色部分是4.2新加的,加入了多使用者的判斷,如果有多個使用者,則彈出剛才所說的對話方塊。所有的使用者所用的locale是同一個,具體邏輯可見\frameworks\base\core\java\com\android\internal\app\LocalePicker.java,updateLocale等函數調用的是這個類中的函數。2.預設的IME是Android的LatinIME,當我以使用者A的身份登入時安裝了“Google拼音IME”,在A的settings中就有這個IME的選項可選擇,但是此時退出再以B身份登入的話,B的settings是沒有“Google拼音IME”可選的。即使用者安裝的第三方apk只對改使用者生效,不會影響其他使用者。Calendar方面:以使用者A登入進去建立事件a,再以使用者B登入進去建立事件b,使用者A看不到事件b,使用者B也看不見事件a,各個使用者之間是相對獨立的。Calendar的實現在packages\apps\Calendar,具體的介面顯示等控制可在此目錄中找到。其ContentProvider控制和訪問Calendar相關的資料,可見packages\providers\CalendarProvider. 目前只測試了這幾項,其他的變化若有發現,日後再補充。