青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

life02

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  197 隨筆 :: 3 文章 :: 37 評論 :: 0 Trackbacks
http://blog.csdn.net/louiswangbing/article/details/6607612

Intent妙用之編寫自己的android主界面

眾所周知,android的主界面名為 laucher2,功能強大,會在android啟動之后運行,也是所有其他應用程序的入口程序。那么,如何讓自己的應用程序取代laucher2的位 置,成為android系統的主界面呢?其實說出來很簡單,接下來,我就來為大家揭開這其中的神秘面紗。

首先,我們來看看一個普通的應用程序的intent聲明:

  1. <intent-filter>  
  2.              <action android:name="android.intent.action.MAIN" />  
  3.              <category android:name="android.intent.category.LAUNCHER" />  
  4.          </intent-filter>  
是不是看著很眼熟呢?沒錯了,這段代碼是在AndroidManifest.xml中相應activity的intent聲明,相信大家目前縮寫的應用程序的intent聲明無一例外都是這樣的吧。可能很多人都會對著兩行代碼有下面的理解:

第二行<action android:name="android.intent.action.MAIN" />表示這個activity是當前應用程序的主activity,而第二行表示當前activity在lancher中加載。

這么理解的卻是沒錯,但事實上,有更加簡單的理解方式。這里請容許我先賣個關子。我們繼續往下看。

既然是想讓我們自己的應用程序取代laucher的位置,那么我們就來看一下lancher的intent聲明是怎么樣的吧:

  1. <intent-filter>  
  2.         <action android:name="android.intent.action.MAIN" />  
  3.         <category android:name="android.intent.category.HOME"/>  
  4.         <category android:name="android.intent.category.DEFAULT" />  
  5.         <category android:name="android.intent.category.MONKEY" />  
  6.     </intent-filter> 
當 然,想要看到這段代碼,你必須要有laucher的源代碼。(關于android源代碼的問題,前面的文章已經提到過很多次了,有源代碼真的是件很好的事 情,不管是對應用程序開發者來說還是對底層開發者來說亦或是對android愛好者來說,都會受益匪淺的,所以這里再次建議大家不要僅僅局限于 android sdk和avd的使用來進行應用程序的開發,不管你有沒有時間,下份源代碼總是沒有壞處的。)

大家看出這兩個intent聲明之間的差別了嗎?沒錯,當出現  <category android:name="android.intent.category.HOME"/>  的時候,我們的應用程序就會變成跟lancher具有相同功能的(當然,我指的僅僅是主界面,laucher的功能是在是太強大了),成為 android系統的主界面,并且,當我們按下Home鍵的時候,會出現一個選擇界面,是不是發現你的應用程序和laucher同時出現在了選擇框中呢? 如果是,那么恭喜你,從功能上來說,你已經實現了。如果沒有看到,請email我louiswangbing@gmail.com。

但是,所謂一山不容二虎,同時有兩個主界面存在當然不是我們想要的。

如 果你有android源代碼的話,你甚至可以把laucher刪掉,直接將你自己的應用程序編譯到android系統中,這樣,系統啟動的時候就會直接運 行你的應用程序,而你的應用程序就會堂而皇之地鳩占鵲巢,順理成章的成為系統的主界面,并且當你按下Home鍵的時候,就會跳到你的應用程序的主 activity了!!

如果你只是一個功能上的追求者,那么看到這里你就可以關掉這個頁面去試試上面的功能了。

如果你是一個好奇心比較強的人,那么請跟著我繼續往下看。

剛才我說過,intent聲明的理解問題。事實上,你可以有更好的理解方式,當然,這要建立在你對android系統的啟動進程有一定的了解的基礎上。

簡 單來說,intent其實就是一個條件過濾器,activity的intent聲明的每一條都可以作為一個過濾條件,條目越多,過濾條件也就越強,定位起 來也就越容易。相信這個原理學過數據庫的朋友理解起來更加容易。你可以將整個android系統中所有的activity都集中起來當成是一個數據庫,而 intent本身就是一條select語句,其中每一項聲明都是一項過濾條件,而過濾之后剩下的,就是將要被調用的activity。當過濾條件足夠強大 或者過濾條件比較特殊的時候,最后剩下的只有一個activity,那么系統會毫不猶豫地啟動它;當過濾條件不足導致過濾之后還剩下比較多的 activity的時候,系統會將滿足這些條件的所有的activity用一個listview列出來讓你選擇。

相信原理大家都已經很清楚了,那么上面所述的這個功能就很好理解了。沒錯,android在啟動的時候會有一個PackageManager選擇系統中滿足過濾條件:

  1. <action android:name="android.intent.action.MAIN" />  
  2.         <category android:name="android.intent.category.HOME"/>  
  3.         <category android:name="android.intent.category.DEFAULT" />  
  4.         <category android:name="android.intent.category.MONKEY" />  
的 activity作為系統啟動的第一個activity,也就是主界面,任何一個滿足這個過濾條件的activity都將進入候選名單,如果候選名單中僅 有一人,那么很榮幸,不戰而勝,你就是系統的主界面了;如果候選名單中有多個人(比如剛才說的有laucher和你自己的應用程序),那么就進入殘酷的” 民意選舉“,也就是用戶自己的選擇,你選誰系統就會啟動誰。但和民意選舉不同的是,選舉出來的結果通常會有一定的任期,而這個主界面的選舉任期非常的短, 每當你按下一次Home鍵或者重啟一下系統,系統就會重新安排一次”民意選舉“。如果想要永遠的成為主界面,那么唯一的辦法就是--沒錯,雖然很殘酷,但 不得不說--就是,干掉它......或者和諧一點,你可以讓它活著,但是也必須將它貶為庶民或者是將其發配邊疆,具體的實施手段就是--改掉它的 intent聲明,使其不滿足主界面的這個過濾條件。

在 整個intent妙用章節中,這一章算是比較特殊的,因為雖然所有的章節運用的原理基本相通,也就是我上面說到的原理,但是后續章節的intent過濾條 件都是可以由用戶自己定義、手動修改的,而唯獨只有這個是不能改的,你只能決定去適應或者不適應這個過濾條件,而不能去改變這個過濾條件,就像你只能去適 應這個社會,卻很難改變它--或許不是不能,而是暫時還能找到途徑......

有時候真的,生活跟計算機,居然有如此之多的相似之處......


posted on 2011-12-07 23:26 life02 閱讀(389) 評論(0)  編輯 收藏 引用 所屬分類: android組件學習
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品综合一区| 伊人成人在线| 欧美在线看片a免费观看| aa亚洲婷婷| 亚洲图片激情小说| 亚洲一区不卡| 欧美在线观看视频| 久久国产综合精品| 奶水喷射视频一区| 欧美日本一区| 国产欧美91| 亚洲国产va精品久久久不卡综合| 一区二区视频免费完整版观看| 国产一区二区日韩精品欧美精品| 国内揄拍国内精品少妇国语| 在线播放日韩专区| 中国成人亚色综合网站| 欧美在线视频免费播放| 欧美福利影院| 亚洲一区二区三区免费视频| 久久精品国产久精国产思思| 欧美成人综合在线| 国产精品一区在线观看| 亚洲国产综合在线看不卡| 亚洲午夜性刺激影院| 久久免费国产| 一区二区成人精品 | 先锋亚洲精品| 久久久久国产精品厨房| 亚洲夫妻自拍| 亚洲视频在线看| 玖玖玖免费嫩草在线影院一区| 欧美日韩中文精品| 尹人成人综合网| 性欧美大战久久久久久久免费观看 | 亚洲夜晚福利在线观看| 久久久夜色精品亚洲| 欧美三级视频在线| 亚洲国产一区二区在线| 久久国产精品99国产精| 亚洲免费av片| 欧美成人综合一区| 在线日韩欧美视频| 久久久7777| 亚洲免费视频在线观看| 制服丝袜激情欧洲亚洲| 亚洲国产mv| 久久久久久久尹人综合网亚洲| 亚洲精品一区二区三区蜜桃久| 久久国产精品久久久久久电车 | 国产一区视频在线看| 亚洲一区二区三区免费观看 | 亚洲永久免费视频| 欧美激情五月| 久久夜色精品亚洲噜噜国产mv| 国产视频久久网| 久久国产精品99精品国产| 亚洲小视频在线观看| 国产精品久久久久久久9999| 日韩亚洲不卡在线| 亚洲第一精品夜夜躁人人爽| 久久综合电影一区| 尤物九九久久国产精品的分类| 久久精品夜色噜噜亚洲a∨| 一本色道久久综合| 欧美午夜影院| 欧美在线高清视频| 亚洲主播在线观看| 国产一区二区按摩在线观看| 久久九九电影| 久久久久久久999| 樱花yy私人影院亚洲| 欧美福利在线观看| 欧美黄色免费网站| 亚洲尤物在线视频观看| 正在播放欧美视频| 国产一区二区剧情av在线| 牛夜精品久久久久久久99黑人| 另类国产ts人妖高潮视频| 亚洲精品视频中文字幕| 一区二区av在线| 国产一区二区日韩精品欧美精品| 久久综合亚州| 欧美精品国产精品| 午夜精彩视频在线观看不卡 | 亚洲一区二区视频| 午夜国产欧美理论在线播放| 国产日韩欧美一区二区| 久久夜色精品国产噜噜av| 蜜桃av一区二区| 亚洲一品av免费观看| 欧美一区激情| 亚洲美女在线看| 亚洲特色特黄| 在线观看日韩一区| 亚洲美女中文字幕| 国产亚洲精品一区二区| 亚洲国产精品一区制服丝袜| 国产精品免费久久久久久| 久久久人人人| 国产精品久久久久aaaa| 久久亚洲不卡| 欧美三级精品| 久久一区激情| 欧美性事免费在线观看| 美腿丝袜亚洲色图| 国产精品成人免费视频| 欧美粗暴jizz性欧美20| 国产精品嫩草99a| 亚洲国产婷婷| 黄色成人av网站| 亚洲天堂av图片| 99国产精品国产精品毛片| 久久久91精品国产| 欧美伊人久久| 亚洲三级视频在线观看| 韩日欧美一区| 亚洲综合精品自拍| 亚洲一区精品在线| 欧美激情视频免费观看| 老司机精品久久| 国产视频精品免费播放| 中文有码久久| 亚洲一区二区三区成人在线视频精品| 久久精品一二三| 久久国产精品久久精品国产| 欧美色播在线播放| 99天天综合性| 一区二区三区国产盗摄| 欧美大片免费观看| 欧美激情亚洲另类| …久久精品99久久香蕉国产| 欧美一区二区三区视频免费播放| 亚洲男人第一av网站| 欧美日韩综合网| 亚洲美女精品久久| 亚洲视频第一页| 欧美日韩免费一区| 一本色道久久99精品综合| 一区二区久久久久| 欧美精选午夜久久久乱码6080| 亚洲国产精品va在看黑人| 亚洲欧洲一区二区天堂久久| 免费不卡在线视频| 亚洲国产成人午夜在线一区| 亚洲精品少妇网址| 欧美日韩国产综合新一区| 日韩午夜激情av| 午夜视频在线观看一区二区三区 | 榴莲视频成人在线观看| 欧美超级免费视 在线| 亚洲国产日韩欧美在线图片 | 亚洲午夜女主播在线直播| 亚洲男同1069视频| 国产日韩亚洲欧美综合| 久久久99国产精品免费| 欧美大片va欧美在线播放| 亚洲另类在线一区| 国产精品成人v| 久久av资源网| 亚洲激情视频| 性欧美xxxx视频在线观看| 国产一区二区精品丝袜| 美腿丝袜亚洲色图| 在线日韩中文| 欧美精品在线一区二区| 亚洲视频在线观看| 久久久噜噜噜久久| 亚洲免费观看| 国产精品尤物福利片在线观看| 久久久777| 日韩一区二区免费看| 欧美在线一二三区| 亚洲精品网址在线观看| 国产精品欧美日韩一区二区| 久久成人在线| 夜夜嗨av一区二区三区网页| 久久久久成人精品| 亚洲精品一区二区在线| 国产精品毛片在线| 免费观看成人网| 亚洲免费在线视频| 亚洲黄色在线视频| 久久久国产视频91| 亚洲视频高清| 亚洲人成在线观看一区二区| 国产农村妇女精品一二区| 欧美成人免费播放| 久久国产精品高清| 亚洲午夜小视频| 亚洲日本一区二区| 老司机免费视频一区二区三区| 亚洲免费视频成人| 亚洲看片免费| 亚洲国产欧美一区二区三区同亚洲| 国产精品久久久久久福利一牛影视| 麻豆久久婷婷| 久久久亚洲影院你懂的| 欧美一区二区视频在线| 亚洲一区二区免费看|