一、內(nèi)容提供者(content provider):是Android四大組件之一,內(nèi)容提供者是應用程序之間共享數(shù)據(jù)的接口,應用程序創(chuàng)建的數(shù)據(jù)庫,默認情況下是私有的。別的應用程序訪問不到數(shù)據(jù),如果想把數(shù)據(jù)對外提供,就要用到內(nèi)容提供者。ContentProvider屏蔽了數(shù)據(jù)存儲的細節(jié),內(nèi)部實現(xiàn)對用戶完全透明,用戶只需關系操作數(shù)據(jù)的uri即可,ContentProvider可以實現(xiàn)不同app之間共享。
???? SQL也有增刪改查的的方法,但是SQL只能只能查詢本應用下的數(shù)據(jù)庫,ContentProvider還可以去增刪改查本地文件/XML文件的讀取等。Android系統(tǒng)將這種機制應用到方方面面。比如:聯(lián)系人(通訊錄應用程序)Provider專為不同應用程序提供聯(lián)系人數(shù)據(jù);短信(短信應用程序)Provider專為不同應用程序提供系統(tǒng)短信信息。當應用程序繼承ContentProvider類,并重寫該類用于提供數(shù)據(jù)和存儲數(shù)據(jù)的方式,就可以向其他應用共享其數(shù)據(jù)。雖然使用其他方法也可以對外共享數(shù)據(jù),但數(shù)據(jù)訪問方式會因為數(shù)據(jù)存儲的方式而不同。如:采用文件方式對外共享數(shù)據(jù),需要進行文件操作讀寫操作;采用SharedPreferences 共享數(shù)據(jù),需要使用SharedPreferences?API讀寫數(shù)據(jù)。而使用ContentProvider共享數(shù)據(jù)的好處是統(tǒng)一了數(shù)據(jù)訪問方式??傊瑑?nèi)容提供者管理了對結構化數(shù)據(jù)最常見的就是數(shù)據(jù)庫中數(shù)據(jù)的訪問,操作內(nèi)容提供者是不同進程之間以數(shù)據(jù)庫數(shù)據(jù)形式交互數(shù)據(jù)的標準方式。
? 1、Android平臺提供了ContentProvider使一個應用程序指定數(shù)據(jù)集提供給其他應用程序,其他應用可以通過ContentResolver類從該內(nèi)容提供者中獲取或存入數(shù)據(jù)。
?2、只有需要在多個應用之間共享數(shù)據(jù)才會用到內(nèi)容提供者。例如:通訊錄被多個應用程序使用,且必須存儲在一個內(nèi)容提供者中,它的好處是統(tǒng)一數(shù)據(jù)訪問方式。
?3、開發(fā)人員不會直接使用ContentProvider類的對象,大多數(shù)是通過ContentResolver對象實現(xiàn)對ContentProvider的操作。
?4、ContentProvider使用url來唯一標識其數(shù)據(jù)集,這里的url以content://作為前綴,表示數(shù)據(jù)由ContentProvider來管理。