1. 程式人生 > >Android Launcher分析和修改3——Launcher啟動和初始化

Android Launcher分析和修改3——Launcher啟動和初始化

@Override protected void onCreate(Bundle savedInstanceState)
  { super.onCreate(savedInstanceState);
//獲取Application 例項 LauncherApplication app = ((LauncherApplication)getApplication());
     //LauncherModel類裡面獲取Launcher的物件引用 mModel
= app.setLauncher(this);
//獲取IconCache,IconCache在Application裡面初始化   
  mIconCache
= app.getIconCache(); mDragController = new DragController(this); mInflater = getLayoutInflater(); mAppWidgetManager = AppWidgetManager.getInstance(this); //監聽widget改變,以後在Model裡面回撥處理的結果 mAppWidgetHost = new LauncherAppWidgetHost(this
, APPWIDGET_HOST_ID); mAppWidgetHost.startListening();
     //這個是設定Launcher的跟蹤除錯檔案,下面很多資訊會寫到這個檔案裡面。
if (PROFILE_STARTUP)
     { android.os.Debug.startMethodTracing( Environment.getExternalStorageDirectory()
+ "/launcher"); } //讀取本地配置,儲存更新配置,清空IconCache
checkForLocaleChange(); setContentView(R.layout.launcher); //對所有的UI控制元件進行載入和配置 setupViews(); //顯示操作提示,第一次啟動的時候才會顯示 showFirstRunWorkspaceCling(); //註冊監控Launcher資料庫變化 registerContentObservers();      //鎖住APP,初始化不能操作。 lockAllApps(); mSavedState = savedInstanceState; restoreState(mSavedState); // Update customization drawer _after_ restoring the states if (mAppsCustomizeContent != null)
     { mAppsCustomizeContent.onPackagesUpdated(); }
if (PROFILE_STARTUP)
     { android.os.Debug.stopMethodTracing(); }
//載入啟動資料,所有介面資料(快捷方式、folder、widget、allApp)等在loader裡面載入,這部分後面我會詳細分析。 if (!mRestoring) { mModel.startLoader(this, true); } if (!mModel.isAllAppsLoaded())
     { ViewGroup appsCustomizeContentParent
= (ViewGroup) mAppsCustomizeContent.getParent(); mInflater.inflate(R.layout.apps_customize_progressbar, appsCustomizeContentParent); } // For handling default keys mDefaultKeySsb = new SpannableStringBuilder(); Selection.setSelection(mDefaultKeySsb, 0); IntentFilter filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); registerReceiver(mCloseSystemDialogsReceiver, filter);
     //下面這幾個就是Android原生介面上的Market、搜尋、聲音輸入按鈕的預設圖示顯示。 boolean searchVisible
= false; boolean voiceVisible = false; // If we have a saved version of these external icons, we load them up immediately int coi = getCurrentOrientationIndexForGlobalIcons(); if (sGlobalSearchIcon[coi] == null || sVoiceSearchIcon[coi] == null || sAppMarketIcon[coi] == null) { updateAppMarketIcon(); searchVisible = updateGlobalSearchIcon(); voiceVisible = updateVoiceSearchIcon(searchVisible); } if (sGlobalSearchIcon[coi] != null) { updateGlobalSearchIcon(sGlobalSearchIcon[coi]); searchVisible = true; } if (sVoiceSearchIcon[coi] != null)
   { updateVoiceSearchIcon(sVoiceSearchIcon[coi]); voiceVisible
= true; } if (sAppMarketIcon[coi] != null)
    { updateAppMarketIcon(sAppMarketIcon[coi]); } mSearchDropTargetBar.onSearchPackagesChanged(searchVisible, voiceVisible);
// On large interfaces, we want the screen to auto-rotate based on the current orientation if (LauncherApplication.isScreenLarge() || Build.TYPE.contentEquals("eng"))
     { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); } Log.i(TAG,
"------------------------>Launcher init over") ; }

相關推薦

Android Launcher分析修改3 Launcher啟動初始

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android Launcher分析修改3——Launcher啟動初始

@Override protected void onCreate(Bundle savedInstanceState)   { super.onCreate(savedInstanceState); //獲取Application 例項 La

Android Launcher分析修改9——Launcher啟動APP流程

  本來想分析AppsCustomizePagedView類,不過今天突然接到一個臨時任務。客戶反饋說機器介面的圖示很難點選啟動程式,經常點選了沒有反應,Boss說要優先解決這問題。沒辦法,只能看看是怎麼回事。今天分析一下Launcher啟動APP的過程。從使用者點選到程式啟動的流程,下面針對WorkSpac

Android Launcher分析修改1——Launcher預設介面配置(default_workspace)

//Edited by mythou // //傳入default_workspace檔案的資源ID和資料庫實力,把xml裡面資料解析,儲存到Launcher資料庫。返回總共解析了多少個標籤。 private int loadFavorites(SQLiteDatabase db, int workspa

Android進階3:Activity原始碼分析(2) —— Activity啟動銷燬流程(8.0)

上篇文章講述了app從啟動建立Activity呼叫onCreate,onStart, onResume方法,這篇文章講述一下Activity啟動的另一個切入點:startActivity方法,啟動Activity。 通過上一篇文章,我們總結一下: 1:A

android黑科技系列——修改鎖屏密碼惡意鎖機樣本原理分析

無需 功能 log 輔助 數據庫文件 手勢密碼 安全網 樣式 進制 一、Android中加密算法 上一篇文章已經介紹了Android中系統鎖屏密碼算法原理,這裏在來總結說一下: 第一種:輸入密碼算法 將輸入的明文密碼+設備的salt值,然後操作MD5和SHA1之後在轉

樹莓派3啟動 系統配置

sshd err date int pic imageview ras per c4c 在上一篇文章中系統已經燒寫到SD卡中了,接下來我們來啟動,啟動系統。為了方便操作,需要一個HDMI的顯示器,USB鼠標和鍵盤。啟動直接將SD卡放入樹莓派,通電就啟動了。不需要特殊配置就啟

Android PackageManagerService分析一:PMS的啟動

從這一章開始,我們來分析Android的PackageManagerService,後面簡稱PMS。PMS用來管理所有的package資訊,包括安裝、解除安裝、更新以及解析AndroidManifest.xml以組織相應的資料結構,這些資料結構將會被PMS、Activity

Android Input系統原始碼分析一(啟動初始

一. Input系統的啟動Android Framework是由一系列的Service所構建起來的,其中與Input相關的主要是InputManagerService(IMS)。我們看看IMS的啟動流程。IMS是在SystemServer.startOtherService中

cmdb資產管理系統server端資產新增修改(內存網卡)

att 相關 all creat 對象 clas eat pad init 內存相關代碼 from repository import models class Memory(object): def __init__(self,server_obj,info)

第四課:YarnMap/Reduce配置啟動原理講解

data 程序 jar sheet 編輯 datanode 示例 數據 說過 前三節課主要講了hdfs,hdfs就是一個分魚展的大硬盤 分:分塊 魚:冗余 展:動態擴展 接下來講雲計算,也可以理解為分布式計算,其設計原則: 移動計算,而不是移動數據 前面說過,hadoo

IIS 站點應用池命令啟動停止

exe start 程序 top system cycle style iis bsp 在CMD下執行如下命令: IIS站點: 停止站點: C:\Windows\System32\inetsrv\appcmd.exe stop site “XXXX” 啟動站點: C:\Wi

Netflix Eureka原始碼分析(7)——eureka client啟動環境初始流程

eureka-examples,有一個類,ExampleEurekaClient,就是一個自帶的例子,如果是一個eureka服務,一定會有一個eureka client,服務例項啟動的時候,一定會啟動eureka client,eureka client去向eureka se

談談Delphi中的類物件3---抽象類它的例項

---恢復內容開始--- 四、抽象類和它的例項   Delphi中有一個類稱為是抽象類,你不能天真的直接為它建立一個例項,如 var StrLst: TString; begin StrLst:= TString.Create; StrLst.Add('I love

Enhancement point的開發修改(除了出口BADI的另外一種增強方式)

這種增強比較簡單理解和實現,而且在很多標準程式裡也會用到。 1、Enhancement point的開發:       下面這個例子是在一個普通的report裡面做增強:        插入一個增強點,有兩步:                           插入之後

OEM dbconsole isqlplus 服務的啟動關閉

1.啟動oem dbconsole [[email protected] 10.2.0]$ emctl start dbconsole Oracle Enterprise Manager 10g Database Control Release 10.2.0.

SpringBoot啟動流程分析(一):SpringApplication類初始過程

SpringBoot系列文章簡介 SpringBoot原始碼閱讀輔助篇:   Spring IoC容器與應用上下文的設計與實現 SpringBoot啟動流程原始碼分析: SpringBoot啟動流程分析(一):SpringApplication類初始化過程 SpringBoot啟動流程分析(二)

SpringMVC原始碼分析3:DispatcherServlet的初始與請求轉發

在我們第一次學Servlet程式設計,學java web的時候,還沒有那麼多框架。我們開發一個簡單的功能要做的事情很簡單,就是繼承HttpServlet,根據需要重寫一下doGet,doPost方法,跳轉到我們定義好的jsp頁面。Servlet類編寫完之後在web.xml裡註冊這個Servlet類。 除此之外

類變量實例變量及其初始

初始化 pos java 基本 定義 由於 調用 什麽 gpo 0.基本概念   類變量是指java類中的static數據成員,實例變量則是指java類中的非static數據成員。由於類變量不需要創建一個對象即可訪問,而實例變量則必須與一個具體的對象對應,因此類變量和實例變

監聽器-啟動初始表 學習筆記:

監聽器-啟動會初始化表 學習筆記:遇到問題: 數據庫連接問題;後面采用固定寫法: 解決問題 /**c3p0取得數據源*/ public static DataSource getDataSource() throws Exception { ComboPooledDataS