先講一下Application類的使用
要使用自定義的Application,首先就是要自己新建一個(gè)Application的子類,然后把它的名字寫在manifest文件里面的application標(biāo)簽里的android:name屬性就行,如我的Application子類名字是BaseApplication,則:
android:name=".BaseApplication"
1. 初始化資源
由于Application類是在APP啟動(dòng)的時(shí)候就啟動(dòng),啟動(dòng)在所有Activity之前,所以可以使用它做資源的初始化操作,如圖片資源初始化,WebView的預(yù)加載,推送服務(wù)的注冊(cè)等等,注意不要執(zhí)行耗時(shí)操作,會(huì)拖慢APP啟動(dòng)速度。
2.數(shù)據(jù)全局共享
可以設(shè)置一些全局的共享常量,如一些TAG,枚舉值等。
可以設(shè)置一些全局使用的共享變量數(shù)據(jù),如一個(gè)全局的Handler等等,但是要注意,這里緩存的變量數(shù)據(jù)的作用周期只在APP的生命周期,如果APP因?yàn)閮?nèi)存不足而結(jié)束的話,再開啟這些數(shù)據(jù)就會(huì)消失,所以這里只能存儲(chǔ)一些不重要的數(shù)據(jù)來使數(shù)據(jù)全APP共享,想要儲(chǔ)存重要數(shù)據(jù)的話需要SharePreference、數(shù)據(jù)庫(kù)或者文件存儲(chǔ)等這些本地存儲(chǔ)。
可以設(shè)置一些靜態(tài)方法來讓其他類調(diào)用,來使用Application里面的全局變量,如實(shí)現(xiàn)APP一鍵退出功能時(shí)候會(huì)用到。
藍(lán)牙協(xié)議的初始化
每一個(gè)應(yīng)用都對(duì)應(yīng)一個(gè)Application類,而且該類是一個(gè)應(yīng)用的入口。而藍(lán)牙協(xié)議的初始化就是放在這個(gè)入口當(dāng)中進(jìn)行初始化。在packages\apps\Bluetooth\AndroidManifest.xml中有:
所以應(yīng)用程序首先執(zhí)行AdapterAPP類,該類繼承了Application。
Config.init()方法就是對(duì)各個(gè)協(xié)議做初始化工作:
PROFILE_SERVICES_FLAG數(shù)組包含了一些協(xié)議的“R.bool.協(xié)議”的資源屬性,這些屬性值在/packages/apps/Bluetooth/res/values/config.xml,當(dāng)協(xié)議對(duì)應(yīng)的flag要為true,就從PROFILE_SERVICES[]中將對(duì)應(yīng)的協(xié)議類添加到profiles,最后通過“profiles.toArray(SUPPORTED_PROFILES)”轉(zhuǎn)換為對(duì)應(yīng)的類,比如A2dpService。文章來源:http://www.zghlxwxcb.cn/news/detail-500086.html
這個(gè)Config.java只是把所有協(xié)議添加到sSupportedProfiles。如果要加載某個(gè)協(xié)議,則調(diào)用Config.getSupportedProfiles()并進(jìn)行判斷、或啟動(dòng)協(xié)議。
啟動(dòng)協(xié)議:
AdapterService.startProfileServices()獲得協(xié)議的配置信息后,將AdapterStateMachine切換到STARED模式(即OnState模式):
如上,用startService啟動(dòng)各個(gè)協(xié)議對(duì)應(yīng)的服務(wù)。下面介紹A2DPService:
A2DPService的啟動(dòng):
A2DPSinkService的啟動(dòng):文章來源地址http://www.zghlxwxcb.cn/news/detail-500086.html
到了這里,關(guān)于Android 9 藍(lán)牙協(xié)議初始化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!