• <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 - 我并不覺(jué)的自豪,我所嘗試的事情都失敗了······習(xí)慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過(guò)程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛(ài)傳出去,很困難,也無(wú)法預(yù)料,人們需要更細(xì)心的觀察別人,要隨時(shí)注意才能保護(hù)別人,因?yàn)樗麄兾幢刂雷约阂裁础ぁぁぁぁ?/span>
            一LauncherApplication->onCreate
              1.//設(shè)置最小堆內(nèi)存4M
              2.//建立應(yīng)用圖標(biāo)緩存器
              3.//建立LauncherModel
              4.//注冊(cè)Intent.ACTION_PACKAGE_ADDED,Intent.ACTION_PACKAGE_REMOVED,Intent.ACTION_PACKAGE_CHANGED事件監(jiān)聽(tīng)器
              LauncherModel作為廣播接收器對(duì)上面3中事件進(jìn)行監(jiān)聽(tīng)
              5.//添加對(duì)桌面favorites content provider 數(shù)據(jù)變化監(jiān)聽(tīng)器
              二Launcher->onCreate
              1.獲取LauncherApplication LauncherModel mIconCache等LauncherApplication初始化的對(duì)象
              2.新建拖放控制器new DragController(this)
              4.//獲取桌面組件管理器,啟動(dòng)桌面組件host
              5.//從array.hotseats中加載所有的hotseats(熱鍵 如掛機(jī)按鈕,google瀏覽器)
              6.從launcher.preferences加載本地設(shè)置
              7.//設(shè)置壁紙尺寸寬度=display.getWidth()* WALLPAPER_SCREENS_SPAN,高度=display.getHeight()
              8.//加載布局文件
              9.//初始化所有控件
              10.//從Bundle savedInstanceState獲取桌面持久化數(shù)據(jù) 設(shè)置mRestoring = true;
              11.如果mRestoring == false,調(diào)用LauncherModel加載桌面項(xiàng) mModel.startLoader(this, true,isLanguageChange);
              a.LauncherModel.Loader.startLoader() 代碼同步處理
              b.新建LauncherModel.Loader.LoaderThread線程并啟動(dòng)線程(桌面項(xiàng)加載,詳細(xì)見(jiàn)第三步)
              12.注冊(cè)Intent.ACTION_CLOSE_SYSTEM_DIALOGS廣播監(jiān)聽(tīng)
              三 桌面項(xiàng)加載 LauncherModel.Loader.LoaderThread.run:新線程執(zhí)行
              1.等待主線程運(yùn)行結(jié)束才開(kāi)始加載
              2.判斷是否先加載桌面;loadWorkspaceFirst = cbk != null ? (!cbk.isAllAppsVisible()) : true;
              3.loadWorkspaceFirst==true
              a.loadAndBindWorkspace()
              loadWorkspace():從數(shù)據(jù)庫(kù)launcher.db中查詢中所有桌面項(xiàng)構(gòu)造對(duì)應(yīng)類型的ItemInfo對(duì)象存入
              mItems,mAppWidgets,mFolders列表.
              bindWorkspace():
              1.laucher.startBinding(),異步調(diào)用,在主線程中handle
              //do no things
              2.laucher.bindItems(),異步調(diào)用,在主線程中handle
              1.根據(jù)ItemInfo對(duì)象創(chuàng)建桌面圖標(biāo)view對(duì)象
              2.獲取item.screen, item.cellX, item.cellY, spanX, spanY,
              調(diào)用workspace.addInScreen添加到對(duì)應(yīng)桌面的cell
              1.重新設(shè)置桌面圖標(biāo)view 的layoutparam(類型為cellLayout.layoutparam)
              2.根據(jù)item.screen獲取桌面的celllayout對(duì)象,也就是workspace下5個(gè)用戶桌面中的一個(gè)
              3.調(diào)用celllayout.addview方法把桌面圖標(biāo)view對(duì)象添加為celllayout的child,也就是為用戶桌面添加一個(gè)桌面圖標(biāo)
              4.桌面圖標(biāo)view對(duì)象添加OnLongClickListener=laucher,由laucher負(fù)責(zé)監(jiān)聽(tīng)桌面圖標(biāo)view的longclick事件
              5.如果桌面圖標(biāo)是DropTarget對(duì)象,拖放控制器mDragController添加該view到拖放目的地列表
              3.laucher.bindFolders(),異步調(diào)用,在主線程中handle
              //launcher.mFolders.putAll(mFolders);
              4.laucher.bindAppWidget(),異步調(diào)用,在主線程中handle
              1.獲取LauncherAppWidgetInfo的appWidgetId
              2.獲取AppWidgetProviderInfo appWidgetInfo mAppWidgetManager.getAppWidgetInfo(appWidgetId)
              3.根據(jù)appWidgetInfo創(chuàng)建桌面組件的view AppWidgetHostView對(duì)象
              4.調(diào)用workspace.addInScreen添加到對(duì)應(yīng)桌面的cell
              5.laucher.finishBindingItems(),異步調(diào)用,在主線程中handle
              mWorkspaceLoading=false
              b.loadAndBindAllApps();
              如果沒(méi)有加載apps或者改變了語(yǔ)言設(shè)置
              loadAllAppsByBatch();
              1.//設(shè)置package 查詢條件Intent.ACTION_MAIN Intent.CATEGORY_LAUNCHER
              2.//清空mAllAppsList mAllAppsList.clear();
              3.//packageManager 查詢所有應(yīng)用pakages
              4.分批次mAllAppsList.add 應(yīng)用pakages
              5.laucher.bindAllApplications()//異步調(diào)用
              mAllAppsGrid.setApps(apps)
              6.若分多個(gè)批次加載 laucher.bindAppsAdded()//異步調(diào)用
              mAllAppsGrid.addApps(apps);
              否則
              onlyBindAllApps();
              1.mAllAppsList.data.clone();
              2.laucher.bindAllApplications()//異步調(diào)用
              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 小果子 閱讀(803) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 學(xué)習(xí)筆記Android & Ios
            AAA级久久久精品无码片| 久久国产精品一区| 久久天天躁狠狠躁夜夜不卡| 国产91色综合久久免费分享| 久久久久亚洲Av无码专| 无码国内精品久久人妻| 久久久国产精品福利免费| 久久久久亚洲爆乳少妇无| 狠狠色丁香久久婷婷综合| 婷婷五月深深久久精品| 久久99久久成人免费播放| 99久久无码一区人妻a黑| 狠狠色丁香婷婷综合久久来来去| 久久丝袜精品中文字幕| 久久夜色精品国产网站| 怡红院日本一道日本久久 | 国产ww久久久久久久久久| 麻豆一区二区99久久久久| 久久噜噜电影你懂的| 欧美精品丝袜久久久中文字幕| www.久久99| 欧洲精品久久久av无码电影| 久久超乳爆乳中文字幕| 久久亚洲日韩看片无码| 久久久无码精品亚洲日韩软件| 国产精品久久波多野结衣| 久久天堂AV综合合色蜜桃网| 久久免费观看视频| 2020最新久久久视精品爱| 久久97精品久久久久久久不卡| 亚洲va久久久噜噜噜久久| 思思久久99热只有频精品66| 午夜精品久久久久久久无码| 欧美激情精品久久久久久久九九九 | www.久久99| 久久99国产乱子伦精品免费| 久久亚洲精品人成综合网| 久久精品成人免费国产片小草| 九九久久精品无码专区| 久久99久久99小草精品免视看| 久久婷婷五月综合97色直播|