編輯:關於Android編程
ContentProvider簡介
ContentProvider是不同應用程序之間進行數據交換的標准API,當一個應用程序需要把自己的數據暴露給其他程序使用時,該應用程序便可通過提供ContentProvider來實現,其他應用程序就可通過ContentResolver來操作ContentProvider暴露的數據。如果某一應用程序通過ContentProvider暴露了自己的數據操作接口,則不管該應用程序是否啟動,其他應用程序都可以通過該接口來操作該應用程序的內部數據,包括增加、刪除、修改、查詢數據。
android:authorities屬性
定義好的ContentProvider類必須在AndroidManifest.xml裡聲明後才能使用,聲明中必須添加授權屬性
android:authorities,相當於為該ContentProvider指定域名,Content uri中content://authority/optionalPath/optionalId的authority部分便是android:authorities屬性指定的值。屬性值定義的方法為包名+ “.”+ 該ContentProvider的名稱。
Service本身存在的兩個問題
1. Service不會專門啟動一條單獨的進程,Service與它所在應用處於同一個進程中。
2. Service不是一條新的線程,因此不應該在Service中直接處理耗時的操作,耗時的操作應該開啟一個新的線程來處理。
處理耗時任務的問題
如果就開發這需要在Service模塊中處理耗時任務,一般是在Service中另外啟動一條新線程來處理,但不能在其他應用程序組件中啟動子線程來處理,因為Activity可能會被用戶退出、BroadcastReceiver的生命周期很短,很有可能出現子線程還沒有結束,Activity已經被用戶退出,或者BroadcastReceiver已經結束,出現空線程的情況。
IntentService簡介
IntentService能夠彌補Service本身的兩個缺陷: IntentService會使用隊列來管理請求的Intent,每當客戶端代碼通過Intent請求啟動IntentService時,IntentService會將該Intent加入隊列中,然後開啟一條新的worker線程來處理該Intent,對於異步的startService()請求,IntentService會按次序依次處理隊列中的Intent,該線程保證同一時刻只處理一個Intent。由於IntentService使用新的worker線程處理Intent請求,因此IntentService不會阻塞主線程,所以IntentService自己便能處理耗時的任務。
靜態代碼塊
即類中不包含任何方法體的靜態代碼塊,其格式一般為static{…}。這種靜態代碼塊只在類被加載時執行,而且只執行一次。靜態代碼塊一般用來執行類屬性的初始化。
getResources().getStringArray(…)作用
getResources().getStringArray(R.array.setting)是獲取應用程序中數組資源的方法,即如果要使用應用程序中定義的數組資源,需要使用getResources().getStringArray(R.array.*),其返回值為一個數組。
TelephonyManager服務類的getXxx()方法舉例
1.TelephonyManager.getDeviceId() //獲取設備的編號
2.TelephonyManager.getDeviceSoftwareVersion() //獲取系統平台的版本
3.TelephonyManager.getNetworkOperator() //獲取網絡運營商代號
4.TelephonyManager.getNetworkOperatorName() //獲取網絡運營商名稱
5.TelephonyManager.getPhoneType() //獲取手機網絡類型
6.TelephonyManager.getCellLocation() //獲取設備所在位置
7.TelephonyManager.getSimCountryIso() //獲取SIM卡的國別
8.TelephonyManager.getSimSerialNumber() //獲取SIM卡序列號
9.TelephonyManager.getSimState() //獲取SIM卡狀態
返回值的類型都是String類型。
通話狀態監聽器PhoneStateListener簡介
PhoneStateListener是通話狀態監聽器,定義該監聽器時必須實現onCallStateChanged(intstate, String number)方法。通話狀態的主要靜態常量: int CALL_STATE_IDLE //空閒狀態,沒有任何活動 int CALL_STATE_OFFHOOK //摘機狀態,至少有個電話活動,該活動或是撥打或是通話,或者是on hold。並且沒有電話是ringing or waiting intCALL_STATE_RINGING //來電狀態,電話鈴聲響起的那段時間或正在通話又來新電,新來電話不得不等待的那段時間。
獲取短信管理器的方法
SmsManager sManager= SmsManager.getDefault(); //由此方法獲取應用程序的SmsManager
PendingIntent對象簡介
PendingIntent對象是對Intent的包裝,一般通過調用PendingIntent的getActivity()、getService()、getBroadcastReceiver()靜態方法來獲取PendingIntent對象。與Intent對象不同的是,PendingIntent通常會傳給其他應用組件,從而由其他應用程序來執行PendingIntent所包裝的Intent。
BroadcastReceiver簡介
BroadcastReceiver屬於系統級的監聽器,擁有自己的進程,只要存在與之匹配的Intent被廣播出來,BroadcastReceiver就能被激發。當被激發後,會自動觸發它的onReceive()方法,onReceive()方法執行完畢後,BroadcastReceiver的實例便會被銷毀。與Activity組件不同的是,當系統通過Intent啟動指定的Activity組件時,如果沒有找到合適的Activity組件,會導致程序異常終止,但系統通過Intent激發BroadcastReceiver時,如果找不到合適的BroadcastReceiver組件,應用不會有任何問題。此外,不能在onReceive()中執行耗時的操作,可以考慮通過Intent啟動一個Service來完成該操作。但不能使用新線程完成耗時的操作,因為BroadcastReceiver本身的生命周期很短,可能出現子線程還沒結束,BroadcastReceiver就已經退出了。
使用PC時,我們習慣在安全模式下解決驅動的各種兼容性問題。而你是否又知道,Android手機同樣存在安全模式,幫你解決APP的各種沖突問題。很多Androi
微信的錢可以轉到支付寶嗎?其實,微信與支付寶,是二大死對頭,都在向移動支付市場發力,所以彼此都不會為對方提供支付入口的。無論是微信,還是支付寶,如果要充值或
之前寫過一篇關於Android 繼承DialogFragment彈出dialog對話框一,這次是在上次的基礎上修改了一些東西,就是怎樣在DialogFragment中獲取
1 Content Provider組件簡介Content Provider組件是Android應用的重要組件之一,管理對數據的訪問,主要用於不同的應用程序之間實現數據共