• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            xiaoguozi's Blog
            Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····
            一LauncherApplication->onCreate
              1.//設置最小堆內存4M
              2.//建立應用圖標緩存器
              3.//建立LauncherModel
              4.//注冊Intent.ACTION_PACKAGE_ADDED,Intent.ACTION_PACKAGE_REMOVED,Intent.ACTION_PACKAGE_CHANGED事件監聽器
              LauncherModel作為廣播接收器對上面3中事件進行監聽
              5.//添加對桌面favorites content provider 數據變化監聽器
              二Launcher->onCreate
              1.獲取LauncherApplication LauncherModel mIconCache等LauncherApplication初始化的對象
              2.新建拖放控制器new DragController(this)
              4.//獲取桌面組件管理器,啟動桌面組件host
              5.//從array.hotseats中加載所有的hotseats(熱鍵 如掛機按鈕,google瀏覽器)
              6.從launcher.preferences加載本地設置
              7.//設置壁紙尺寸寬度=display.getWidth()* WALLPAPER_SCREENS_SPAN,高度=display.getHeight()
              8.//加載布局文件
              9.//初始化所有控件
              10.//從Bundle savedInstanceState獲取桌面持久化數據 設置mRestoring = true;
              11.如果mRestoring == false,調用LauncherModel加載桌面項 mModel.startLoader(this, true,isLanguageChange);
              a.LauncherModel.Loader.startLoader() 代碼同步處理
              b.新建LauncherModel.Loader.LoaderThread線程并啟動線程(桌面項加載,詳細見第三步)
              12.注冊Intent.ACTION_CLOSE_SYSTEM_DIALOGS廣播監聽
              三 桌面項加載 LauncherModel.Loader.LoaderThread.run:新線程執行
              1.等待主線程運行結束才開始加載
              2.判斷是否先加載桌面;loadWorkspaceFirst = cbk != null ? (!cbk.isAllAppsVisible()) : true;
              3.loadWorkspaceFirst==true
              a.loadAndBindWorkspace()
              loadWorkspace():從數據庫launcher.db中查詢中所有桌面項構造對應類型的ItemInfo對象存入
              mItems,mAppWidgets,mFolders列表.
              bindWorkspace():
              1.laucher.startBinding(),異步調用,在主線程中handle
              //do no things
              2.laucher.bindItems(),異步調用,在主線程中handle
              1.根據ItemInfo對象創建桌面圖標view對象
              2.獲取item.screen, item.cellX, item.cellY, spanX, spanY,
              調用workspace.addInScreen添加到對應桌面的cell
              1.重新設置桌面圖標view 的layoutparam(類型為cellLayout.layoutparam)
              2.根據item.screen獲取桌面的celllayout對象,也就是workspace下5個用戶桌面中的一個
              3.調用celllayout.addview方法把桌面圖標view對象添加為celllayout的child,也就是為用戶桌面添加一個桌面圖標
              4.桌面圖標view對象添加OnLongClickListener=laucher,由laucher負責監聽桌面圖標view的longclick事件
              5.如果桌面圖標是DropTarget對象,拖放控制器mDragController添加該view到拖放目的地列表
              3.laucher.bindFolders(),異步調用,在主線程中handle
              //launcher.mFolders.putAll(mFolders);
              4.laucher.bindAppWidget(),異步調用,在主線程中handle
              1.獲取LauncherAppWidgetInfo的appWidgetId
              2.獲取AppWidgetProviderInfo appWidgetInfo mAppWidgetManager.getAppWidgetInfo(appWidgetId)
              3.根據appWidgetInfo創建桌面組件的view AppWidgetHostView對象
              4.調用workspace.addInScreen添加到對應桌面的cell
              5.laucher.finishBindingItems(),異步調用,在主線程中handle
              mWorkspaceLoading=false
              b.loadAndBindAllApps();
              如果沒有加載apps或者改變了語言設置
              loadAllAppsByBatch();
              1.//設置package 查詢條件Intent.ACTION_MAIN Intent.CATEGORY_LAUNCHER
              2.//清空mAllAppsList mAllAppsList.clear();
              3.//packageManager 查詢所有應用pakages
              4.分批次mAllAppsList.add 應用pakages
              5.laucher.bindAllApplications()//異步調用
              mAllAppsGrid.setApps(apps)
              6.若分多個批次加載 laucher.bindAppsAdded()//異步調用
              mAllAppsGrid.addApps(apps);
              否則
              onlyBindAllApps();
              1.mAllAppsList.data.clone();
              2.laucher.bindAllApplications()//異步調用
              mAllAppsGrid.setApps(apps)
              4.loadWorkspaceFirst==false
              a.loadAndBindAllApps();
              b.loadAndBindWorkspace();

            http://www.cnblogs.com/playing/archive/2011/04/22/2024980.html
            posted on 2013-02-18 17:37 小果子 閱讀(795) 評論(0)  編輯 收藏 引用 所屬分類: 學習筆記Android & Ios
            色综合久久综精品| 久久久久中文字幕| 中文字幕日本人妻久久久免费| 久久免费大片| 久久99精品久久久久久野外 | 久久经典免费视频| 97久久婷婷五月综合色d啪蜜芽| 香蕉久久夜色精品升级完成| 久久丫精品国产亚洲av| 国产A级毛片久久久精品毛片| 亚洲国产精品狼友中文久久久 | 青青青青久久精品国产| 久久久久久久综合日本| 婷婷伊人久久大香线蕉AV| 久久九九有精品国产23百花影院| 久久精品一区二区影院 | 精品久久久久久综合日本| 久久艹国产| 久久久久99精品成人片试看 | 日日噜噜夜夜狠狠久久丁香五月| 国产麻豆精品久久一二三| 女同久久| 亚洲国产成人久久综合一| 狠狠色婷婷久久一区二区| 久久久久免费精品国产| 2021最新久久久视精品爱| 一本一道久久精品综合| 久久丫精品国产亚洲av| 狠狠色丁香久久婷婷综合_中 | 欧美日韩中文字幕久久久不卡| 国内精品久久久久久久97牛牛 | 久久se精品一区二区影院| 国产∨亚洲V天堂无码久久久| 亚洲欧洲精品成人久久曰影片 | 色综合久久久久网| 国产一级持黄大片99久久| 色综合久久久久无码专区| 区亚洲欧美一级久久精品亚洲精品成人网久久久久| 中文字幕久久久久人妻| 亚洲香蕉网久久综合影视| 久久国产欧美日韩精品|