溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么認(rèn)識(shí)Android開源系統(tǒng)

發(fā)布時(shí)間:2021-11-11 16:07:07 來源:億速云 閱讀:123 作者:柒染 欄目:移動(dòng)開發(fā)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)怎么認(rèn)識(shí)Android開源系統(tǒng),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Android開源系統(tǒng)GOOGLE于Google于2007年11月5日宣布,GOOGLE內(nèi)部會(huì)議據(jù)說號(hào)稱是為移動(dòng)終端打造的真正開放和完整的Android開源系統(tǒng),不知道這個(gè)信息是不是真的很正確。

options menu就是通過按home鍵來顯示,context menu需要在view上按上2s后顯示。這兩種menu都有可以加入子菜單,子菜單不能種不能嵌套子菜單。options menu最多只能在屏幕最下面顯示6個(gè)菜單選項(xiàng),稱為icon menu,icon menu不能有checkable選項(xiàng)。多于6的菜單項(xiàng)會(huì)以more icon menu來調(diào)出。

稱為expanded menu。options menu通過activity的onCreateOptionsMenu來生成,這個(gè)函數(shù)只會(huì)在menu***次生成時(shí)調(diào)用。任何想改變options menu的想法只能在onPrepareOptionsMenu來實(shí)現(xiàn),這個(gè)函數(shù)會(huì)在menu顯示前調(diào)用。onOptionsItemSelected 用來處理選中的菜單項(xiàng)。

context menu是跟某個(gè)具體的view綁定在一起,在activity種用registerForContextMenu來為某個(gè)view注冊(cè)context menu。context menu在顯示前都會(huì)調(diào)用onCreateContextMenu來生成menu。onContextItemSelected用來處理選中的菜單項(xiàng)。

android還提供了對(duì)菜單項(xiàng)進(jìn)行分組的功能,可以把相似功能的菜單項(xiàng)分成同一個(gè)組,這樣就可以通過調(diào)用setGroupCheckable,setGroupEnabled,setGroupVisible來設(shè)置菜單屬性,而無須單獨(dú)設(shè)置。

Notepad中使用了options menu和context menu兩種菜單。首先來看生成options menu的onCreateOptionsMenu函數(shù)。這到底有何用處呢?其實(shí)這是一種動(dòng)態(tài)菜單技術(shù)(也有點(diǎn)像插件機(jī)制),若某一個(gè)activity,其類型是”android.intent.category.ALTERNATIVE”。

數(shù)據(jù)是”vnd.android.cursor.dir/vnd.google.note”的話,系統(tǒng)就會(huì)為這個(gè)activity增加一個(gè)菜單項(xiàng)。在androidmanfest.xml中查看后發(fā)現(xiàn),沒有一個(gè)activity符合條件,所以這段代碼并沒有動(dòng)態(tài)添加出任何一個(gè)菜單項(xiàng)。

對(duì)于上下文菜單項(xiàng)選中的事件處理,是通過重載onContextItemSelected實(shí)現(xiàn)的

switch (item.getItemId()) {           case MENU_ITEM_DELETE: {               // Delete the note that the context menu is for               Uri noteUri = ContentUris.withAppendedId(getIntent().getData(), info.id);               getContentResolver().delete(noteUri, null, null);               return true;           }       }       return false;

對(duì)于日志的刪除,首先調(diào)用ContentUris.withAppendedId(getIntent().getData(), info.id);來拼接出待刪除日志的URI.然后getContentResolver().delete(noteUri, null, null);調(diào)用下層的Content Provider去刪除此日志。

這里先不討論例子了,來看看官方文檔對(duì)Activity生命周期的介紹。

1Android開源系統(tǒng)用Activity Stack來管理多個(gè)Activity,所以呢,同一時(shí)刻只會(huì)有最頂上的那個(gè)Activity是處于active或者running狀態(tài)。其它的Activity都被壓在下面了。

2.如果非活動(dòng)的Activity仍是可見的(即如果上面壓著的是一個(gè)非全屏的Activity或透明的Activity),它是處于paused狀態(tài)的。在系統(tǒng)內(nèi)存不足的情況下,paused狀態(tài)的Activity是有可被系統(tǒng)殺掉的。只是不明白,如果它被干掉了,界面上的顯示又會(huì)變成什么模樣?看來下回有必要研究一下這種情況了。

3.幾個(gè)事件的配對(duì)可以比較清楚地理解它們的關(guān)系。Create與Destroy配成一對(duì),叫entrie lifetime,在創(chuàng)建時(shí)分配資源,則在銷毀時(shí)釋放資源;往上一點(diǎn)還有Start與Stop一對(duì),叫visible lifetime,表達(dá)的是可見與非可見這么一個(gè)過程;最頂上的就是Resume和Pause這一對(duì)了,叫foreground lifetime,表達(dá)的了是否處于激活狀態(tài)的過程。

4.因此,我們實(shí)現(xiàn)的Activity派生類,要重載兩個(gè)重要的方法:onCreate()進(jìn)行初始化操作,onPause()保存當(dāng)前操作的結(jié)果。

上述就是小編為大家分享的怎么認(rèn)識(shí)Android開源系統(tǒng)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI