開機嚮導實現原理

2021-07-11 13:51:40 字數 2153 閱讀 2419

在android tv第一次上電時,會進行乙個國家和語言及蒐台的選擇,實現的原理是:

寫乙個單獨的apk實現相應的功能,把這個單獨的apk設定成launcher:

在androidmanifest.xml中,設定:

android:excludefromrecents="true"

android:launchmode="singleinstance">

那麼開機時,理論上會有兩個launcher啟動,使用者可以選擇,但這裡設定了乙個屬性:intent-filter android:priority="1"

而預設的launcher沒設定這個屬性:

android:name =

"com.haier.haierlauncher2.launcheractivity"

android:label =

android:launchmode =

"singleinstance"

android:theme =

"@android:style/theme.wall*****.notitlebar.fullscreen" >

< intent-filter>

< action android:name =

"android.intent.action.main" />

< category android:name =

"android.intent.category.home" />

< category android:name =

"android.intent.category.default" />

< category android:name =

"android.intent.category.monkey" />

沒有設定這個屬性值,預設為0,:intent-filter android:priority="0"

這個屬性用於給過濾器設定乙個優先順序。其父元件能夠通過優先順序來依次處理過濾器所描述型別的intent物件。這個屬性對activity和broadcast receiver物件有意義:

1. 它提供了activity能夠如何響應跟過濾器匹配的intent物件請求的資訊(相對與其他的也能響應這個intent請求的activity)。當乙個intent物件請求能夠被多個帶有不同優先順序的activity處理時,android系統只考慮把高優先順序的intent過濾器作為潛在的 intent物件請求目標。

2. 它控制了broadcast receiver執行接收廣播訊息的順序。高優先順序的過濾器會優先呼叫。(這個順序只應用與同步訊息,對於非同步訊息會忽略優先順序的設定。)

只有真正想要給接收廣播訊息的過濾器施加乙個特定順序,或者要強制android來應用另外乙個activity,才會使用這個屬性。

這個屬性值必須是乙個整數,如:100,數字越大,優先順序越高。

那麼第一次上電,優先啟動的是這個launcher,

設定完成之後,以後這個launcher不再啟動,可以這樣做:

private void finishsetupwizard()

在用到元件時,有時候我們可能暫時性的不使用元件,但又不想把元件kill掉,比如建立了乙個broadcastreceiver廣播***,用來想監聽第一次開機啟動後獲得系統的許多相關資訊,並儲存在檔案中,這樣以後每次開機啟動就不需要再去啟動該服務了,也就是說如果沒有把receiver關閉掉,就算是不做資料處理,但程式卻還一直在後台執行會消耗電量和記憶體,這時候就需要把這個receiver給關閉掉。

如何關閉元件?

關閉元件其實並不難,只要建立packagemanager物件和componentname物件,並呼叫packagemanager物件的setcomponentenabledsetting方法。

public void setcomponentenabledsetting (componentname componentname, int newstate, int flags)

componentname:元件名稱

newstate:元件新的狀態,可以設定三個值,分別是如下:

不可用狀態:component_enabled_state_disabled

可用狀態:component_enabled_state_enabled

預設狀態:component_enabled_state_default

需要許可權:

橫向導航(ul li)實現

1 生成site.css檔案 注 一定要將該檔案的編碼格式設定為utf 8,否則ie6有可能出現亂碼 ul li以橫排顯示 所有class為menu的div中的ul樣式 div.menu ul 所有class為menu的div中的ul中的li樣式 div.menu ul li 所有class為men...

sql語句的生成嚮導如何實現

最近急需在e表中做乙個sql語句生成器,花了一點時間研究比較了一下,主要找到如下兩類做法 1 主要介面如下圖 它的特點是能比較直觀地反映多個表之間的關聯關係,操作是拖拉方式,比較直觀。但覺得實現起來比較複雜,容易出bug,覺得不好控制拖拉表這一塊。它一般用於通用的工具上,如報表工具,ms acces...

https原理及centos開機流程

web服務存在http和https兩種通訊方式,http預設採用80作為通訊埠,對於傳輸採用不加密的方式,https預設採用443,對於傳輸的資料進行加密傳輸。目前主流的 基本上開始預設採用https作為通訊方式。它其實就是http 加密 身份認證 完整性保護。https並不是一種新的協議,在通訊介...