日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android学习笔记(三)

發(fā)布時間:2023/12/4 Android 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android学习笔记(三) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ContentProvider簡單介紹

??ContentProvider是不同應(yīng)用程序之間進(jìn)行數(shù)據(jù)交換的標(biāo)準(zhǔn)API,當(dāng)一個應(yīng)用程序須要把自己的數(shù)據(jù)暴露給其它程序使用時。該應(yīng)用程序便可通過提供ContentProvider來實(shí)現(xiàn),其它應(yīng)用程序就可通過ContentResolver來操作ContentProvider暴露的數(shù)據(jù)。假設(shè)某一應(yīng)用程序通過ContentProvider暴露了自己的數(shù)據(jù)操作接口,則無論該應(yīng)用程序是否啟動。其它應(yīng)用程序都能夠通過該接口來操作該應(yīng)用程序的內(nèi)部數(shù)據(jù)。包含添加、刪除、改動、查詢數(shù)據(jù)。

android:authorities屬性

?? 定義好的ContentProvider類必須在AndroidManifest.xml里聲明后才干使用,聲明中必須加入授權(quán)屬性

android:authorities。相當(dāng)于為該ContentProvider指定域名,Content uri中content://authority/optionalPath/optionalId的authority部分便是android:authorities屬性指定的值。

屬性值定義的方法為包名+ “.”+ 該ContentProvider的名稱。

Service本身存在的兩個問題

1. Service不會專門啟動一條單獨(dú)的進(jìn)程,Service與它所在應(yīng)用處于同一個進(jìn)程中。

2. Service不是一條新的線程。因此不應(yīng)該在Service中直接處理耗時的操作。耗時的操作應(yīng)該開啟一個新的線程來處理。

處理耗時任務(wù)的問題

假設(shè)就開發(fā)這須要在Service模塊中處理耗時任務(wù),通常是在Service中另外啟動一條新線程來處理,但不能在其它應(yīng)用程序組件中啟動子線程來處理,由于Activity可能會被用戶退出、BroadcastReceiver的生命周期非常短。非常有可能出現(xiàn)子線程還沒有結(jié)束。Activity已經(jīng)被用戶退出,或者BroadcastReceiver已經(jīng)結(jié)束,出現(xiàn)空線程的情況。

IntentService簡單介紹

??IntentService可以彌補(bǔ)Service本身的兩個缺陷: IntentService會使用隊(duì)列來管理請求的Intent,每當(dāng)client代碼通過Intent請求啟動IntentService時。IntentService會將該Intent增加隊(duì)列中,然后開啟一條新的worker線程來處理該Intent,對于異步的startService()請求。IntentService會按次序依次處理隊(duì)列中的Intent,該線程保證同一時刻僅僅處理一個Intent。

因?yàn)镮ntentService使用新的worker線程處理Intent請求,因此IntentService不會堵塞主線程,所以IntentService自己便能處理耗時的任務(wù)。

靜態(tài)代碼塊

?? 即類中不包括不論什么方法體的靜態(tài)代碼塊,其格式一般為static{…}。這樣的靜態(tài)代碼塊僅僅在類被載入時運(yùn)行,并且僅僅運(yùn)行一次。

靜態(tài)代碼塊一般用來運(yùn)行類屬性的初始化。

getResources().getStringArray(…)作用

getResources().getStringArray(R.array.setting)是獲取應(yīng)用程序中數(shù)組資源的方法。即假設(shè)要使用應(yīng)用程序中定義的數(shù)組資源,須要使用getResources().getStringArray(R.array.*),其返回值為一個數(shù)組。

TelephonyManager服務(wù)類的getXxx()方法舉例

? 1.TelephonyManager.getDeviceId()??????????????????????//獲取設(shè)備的編號

? 2.TelephonyManager.getDeviceSoftwareVersion()?????????? //獲取系統(tǒng)平臺的版本號

? 3.TelephonyManager.getNetworkOperator()??????????????? //獲取網(wǎng)絡(luò)運(yùn)營商代號

? 4.TelephonyManager.getNetworkOperatorName()?????????? //獲取網(wǎng)絡(luò)運(yùn)營商名稱

? 5.TelephonyManager.getPhoneType()???????????????????? //獲取手機(jī)網(wǎng)絡(luò)類型

? 6.TelephonyManager.getCellLocation()??????????????????? //獲取設(shè)備所在位置

? 7.TelephonyManager.getSimCountryIso()????????????????? //獲取SIM卡的國別

? 8.TelephonyManager.getSimSerialNumber()??????????????? //獲取SIM卡序列號

? 9.TelephonyManager.getSimState()?????????????????????? //獲取SIM卡狀態(tài)

? 返回值的類型都是String類型。

通話狀態(tài)監(jiān)聽器PhoneStateListener簡單介紹

PhoneStateListener是通話狀態(tài)監(jiān)聽器,定義該監(jiān)聽器時必須實(shí)現(xiàn)onCallStateChanged(intstate, String number)方法。通話狀態(tài)的主要靜態(tài)常量: int CALL_STATE_IDLE? //空暇狀態(tài),沒有不論什么活動??? int CALL_STATE_OFFHOOK? //摘機(jī)狀態(tài)。至少有個電話活動,該活動或是撥打或是通話,或者是on hold。而且沒有電話是ringing or waiting?? intCALL_STATE_RINGING //來電狀態(tài)。電話鈴聲響起的那段時間或正在通話又來新電,新來電話不得不等待的那段時間。

獲取短信管理器的方法

??SmsManager sManager= SmsManager.getDefault();???? //由此方法獲取應(yīng)用程序的SmsManager

PendingIntent對象簡單介紹

? ?PendingIntent對象是對Intent的包裝,一般通過調(diào)用PendingIntent的getActivity()、getService()、getBroadcastReceiver()靜態(tài)方法來獲取PendingIntent對象。與Intent對象不同的是。PendingIntent一般會傳給其它應(yīng)用組件,從而由其它應(yīng)用程序來運(yùn)行PendingIntent所包裝的Intent。

BroadcastReceiver簡單介紹

??BroadcastReceiver屬于系統(tǒng)級的監(jiān)聽器,擁有自己的進(jìn)程,僅僅要存在與之匹配的Intent被廣播出來。BroadcastReceiver就能被激發(fā)。

當(dāng)被激發(fā)后,會自己主動觸發(fā)它的onReceive()方法,onReceive()方法運(yùn)行完畢后。BroadcastReceiver的實(shí)例便會被銷毀。與Activity組件不同的是,當(dāng)系統(tǒng)通過Intent啟動指定的Activity組件時,假設(shè)沒有找到合適的Activity組件,會導(dǎo)致程序異常終止。但系統(tǒng)通過Intent激發(fā)BroadcastReceiver時,假設(shè)找不到合適的BroadcastReceiver組件,應(yīng)用不會有不論什么問題。此外,不能在onReceive()中運(yùn)行耗時的操作,能夠考慮通過Intent啟動一個Service來完畢該操作。但不能使用新線程完畢耗時的操作。由于BroadcastReceiver本身的生命周期非常短,可能出現(xiàn)子線程還沒結(jié)束,BroadcastReceiver就已經(jīng)退出了。

總結(jié)

以上是生活随笔為你收集整理的Android学习笔记(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。