2. contentProvider有個android:multiProcess屬性,用來配置是否在多個進程裏面,有不同的實例。如果為true,那麽它就會在每個訪問這個contentProvider的進程裏面生成壹個對象。這個時候調用contentProvider,就是哪個線程調用的,contentProvider就運行在那個線程裏面。
如果這個值配置為false,那麽多個進程之間***享壹個contentProvider,通過binder來進行進程之間對象傳遞。如果多個進程同時訪問,會為每個訪問請求分配個線程。所以,這些操作,比如查詢,不會運行在contentProvider進程的主線程。
3. contentProvider查詢等操作是否需要等待,需要binder來設置。
4. 另外,contentProvider查詢的數據傳遞是通過ashmem來完成的。
總而言之,
1. contentProvider的初始化是在主線程裏面完成。
2. 請求查詢等操作的話,應用程序最好自己起壹個線程去完成。
3. contentProvider實現比較復雜,底層交互甚多。