1. 程式人生 > >學習Android鬧鐘原始碼(二)-桌面widget類分析

學習Android鬧鐘原始碼(二)-桌面widget類分析

一,專案初看

  (事先要說明的一點就是,我使用的是android4.1的原始碼哦,虛擬機器也是Jelly Bean的哦。

 (1)專案主要由com.android.deskclock及com.android.alarmclock組成。總共

  26個原始檔

其中最簡單的一個要數Log.java類了,相信只要有基本的Java基礎的人都能夠看懂。

 從AndroidManifest.xml檔案中可以看出,應用的入口是DeskClock.java檔案的DeskClock類.

二,進入應用,Jelly Bean的虛擬機器的話,應用的主介面,就有一個時鐘。

  顯然這個時鐘是一個Widget。我們就先來看看這個吧。widget在清單檔案中上的宣告吧:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <receiver android:name="com.android.alarmclock.AnalogAppWidgetProvider" android:icon="@mipmap/ic_widget_analog_clock" android:label
="@string/analog_gadget" > <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.oldName" android:value="com.android.deskclock.AnalogAppWidgetProvider" /> <
meta-data android:name="android.appwidget.provider" android:resource="@xml/analog_appwidget" /> </receiver>

我們知道一個Widget是一個BroadcastReceiver的子類元件。

上面我們只關注它的intent-filter的action,這個宣告,表明這個廣播接收者只接收intent的action

值為"android.appwidget.action.APPWIDGET_UPDATE"的廣播。

事實是Widget本身也對這個做了判斷。

AnalogAppWidgetProvider類程式碼如下:

?
1 2 3 4 5 6 7 8 9 10 11

相關推薦

學習Android鬧鐘原始碼()-桌面widget分析

一,專案初看   (事先要說明的一點就是,我使用的是android4.1的原始碼哦,虛擬機器也是Jelly Bean的哦。  (1)專案主要由com.android.deskclock及com.android.alarmclock組成。總共  

如何學習Android系統原始碼

參考資料 Android系統的原始碼非常龐大和複雜,我們不能貿然進入,否則很容易在裡面迷入方向,進而失去研究它的信心。我們應該在分析它的原始碼之前學習好一些理論知識,下面就介紹一些與Android系統相關的資料。 我們知道,Android系統是基於Linux核心來開發

如何學習Android原始碼

      做了1年2年的android app開發好多人覺得自己陷入了瓶頸期,這個時候感覺自己一般的app都可以開發出來,完成領導想要的功能,各種第三方庫基本都熟練使用了,感覺沒什麼可學習的了,我也有過一段時間的迷茫,那時感覺各種app so easy,由於我

機器學習筆記(3)——使用聚分析演算法對文字分類(分類數k未知)

聚類分析是一種無監督機器學習(訓練樣本的標記資訊是未知的)演算法,它的目標是將相似的物件歸到同一個簇中,將不相似的物件歸到不同的簇中。如果要使用聚類分析演算法對一堆文字分類,關鍵要解決這幾個問題: 如何衡量兩個物件是否相似 演算法的效能怎麼度量 如何確定分類的個數或聚類

機器學習-PCA降維與DBScan聚分析實戰

基本概念:   在資料處理中,經常會遇到特徵維度比樣本數量多得多的情況,如果拿到實際工程中去跑,效果不一定好。一是因為冗餘的特徵會帶來一些噪音,影響計算的結果;二是因為無關的特徵會加大計算量,耗費時間和資源。所以我們通常會對資料重新變換一下,再跑模型。資料變換的目的不僅僅是降維,還可以消除特徵之間的相關性,

Android FrameWork學習Android系統原始碼除錯

為了更進一步地學習跟研究 Android 系統原始碼,今天我們來講講如何進行 Android 系統原始碼的除錯,只有學會了如何進行系統原始碼的除錯,才能幫助我們更高效地閱讀跟理解原始碼。 我們知道,Android Framework 的程式碼主要由Java、C\

Android Gallery3d原始碼學習總結()——繪製流程drawThumbnails

此函式控制相簿表格頁、相片表格頁、時間分類表格頁的展示,非常重要。以下以相簿表格頁為例進行講解,其他的就舉一反三吧。準備輸入引數 final GridDrawables drawables = mDrawables;         final DisplayList d

Android菜鳥之學習android原始碼(SystemUI導航欄初步認識及修改)

涉及到系統的定製開發,不可缺少的一個就是系統導航欄和狀態列的修改,而這部分的修改通常都涉及到SyetemUI這個系統應用的修改,它的路徑通常是位於platform\frameworks\base\packages\SystemUI。 先來說說導航欄的修改吧,導航

Android學習路線(十)Activity生命周期——啟動一個Activity

-c out 方式 下載地址 生命 後臺線程 ring lan debug DEMO下載地址:http://download.csdn.net/detail/sweetvvck/7728735 不像其他的編程模式那樣應用是通過main()函數啟動的。Android系

Swift基礎學習()數據

開發 劃線 amp and running tar get 所在 字面值   在編程語言中,不同的數據信息需要不同的數據類型來存儲,計算機內存中針對不同的數據類型它們所分配的內存大小是不同的,特定的值需要特定的類型來聲明。  Swift 數據類型   內置數據類型   整數

python學習(數據型,標識符)

python 數據類型 標識符數與字符串(1)數 Python中數的類型主要有5種,分為有符號整數型(int),長整型(long),浮點型(float),布爾型(bool),復數型(com plex)。 eg:0、1、-1、1009、-290這些等等都是int型。 eg:87887l、-9

學習之路()淺談:bash及其特性,命令歷史以及用戶管理及權限,shell的

bash 管理權限 過了一周了,進度似乎有點懈怠,不過過了周末重整旗鼓啦shell(外殼)GUI:Gnome,KDE,xfceCLI:sh,csh,ksh,bashbash(父進程)-----bash(子進程)他們相互獨立彼此不知命令歷史:historybash支持的引號:‘ ’命令替換(鍵盤~的按鍵

Android框架原始碼解析之()OKhttp

原始碼在:https://github.com/square/okhttp 包實在是太多了,OKhttp核心在這塊https://github.com/square/okhttp/tree/master/okhttp 直接匯入Android Studio中即可。 基本使用:

Android原始碼中引用@hide出現引用異常的問題error: cannot find symbol

    自己開發的APP在Android中使用一些系統隱藏的類         編譯的時候報錯,出現如下異常 error: cannot find symbol import android.net.EthernetM

一步一步學習Android TV/盒子開發(

TV、機頂盒開發除錯不能像手機一樣通過USB線連線除錯,可通過ADB連線除錯 連線電視 adb connect 10.74.84.199 1 2 連線後就可以開始開發除錯了! 斷開連線 // 斷開某個裝置 adb disconnect 10.74.84

Android第二十課 SurfaceView原始碼以及崩潰剖析

1 在eclipse中檢視Android原始碼 假設我們想參看Activity類的原始碼,按著Ctrl鍵,左擊它,現實的結果卻看不到程式碼的,提示的資訊便是“找不到Activity.class檔案”。下載好Android原始碼之後,點選Attached Source,選擇External locatio

Flume學習之路 ()Flume的Source

bash 官方 tip size pipes lte using exc 正常 一、概述 官方文檔介紹:http://flume.apache.org/FlumeUserGuide.html#flume-sources 二、Flume Sources 描述 2.1 Avro

Java原始碼分析——java.lang.reflect反射包解析() Array,陣列的建立

    在Java中,引用型別中有那麼幾個特殊的類,Object類是所有類的起源、Class類定義所有類的抽象與行為、ClassLoader類實現了類從.class檔案中載入進jvm,而Array陣列類,則實現了陣列手動的建立。  &

Pro Android學習筆記(十) 瞭解Intent(下)

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

【安卓本卓】Android系統原始碼篇之()Source Insight

Source Insight(以下簡稱SI) 一、SI簡介        SI是一款面向專案開發的程式編輯器和程式碼瀏覽器,它提供了一個檢視將分散在各個地方的程式碼匯合在一起形成一個虛擬的整體,供開發者方便地閱讀和編輯,如下圖所示。它已經持續維護了10多年了,旨在提