1. 程式人生 > >Android 面試總結之ContentProvider

Android 面試總結之ContentProvider

1、ContentProvider 是如何實現資料共享的:

在 Android 中如果想將自己應用的資料(一般多為資料庫中的資料)提供給第三發應用,那麼我們只能通過 ContentProvider 來實現了。 ContentProvider 是應用程式之間共享資料的介面。使用的時候首先自定義 一個類繼承 ContentProvider,然後覆寫 query、insert、update、delete 等 方法。因為其是四大元件之一因此必須在 AndroidManifest 檔案中進行註冊。 把自己的資料通過 uri 的形式共享出去 android 系統下 不同程式 資料預設是不能共享訪問 需要去實現一個類去繼承 ContentProvider。

public class PersonContentProvider extends ContentProvider{
    public boolean onCreate(){ 
   }
   query(Url, String[], String, String[], String);
   insert(Uri,ContentValues);
   update(Uri,ContentValues,String[]);
   delete(Uri,String,String[]);
} 


2. 為什麼要用 ContentProvider?它和 sql 的實現上有什麼差別?

 ContentProvider 遮蔽了資料儲存的細節,內部實現對使用者完全透明,使用者只 需要關心操作資料的 uri 就可以了,ContentProvider 可以實現不同 app之間 共享。Sql 也有增刪改查的方法,但是 sql 只能查詢本應用下的資料庫。而 ContentProvider 還可以去增刪改查本地檔案. xml 檔案的讀取等。

3、Uri介紹


為系統的每一個資源給其一個名字,比方說通話記錄。
1)每一個ContentProvider都擁有一個公共的URI,這個URI用於表示這個ContentProvider所提供的資料。 
2)Android所提供的ContentProvider都存放在android.provider包中。 將其分為A,B,C,D 4個部分:
A:標準字首,用來說明一個Content Provider控制這些資料,無法改變的;"content://";
B:URI 的標識,用於唯一標識這個ContentProvider,外部呼叫者可以根據這個標識來找到它。它定義了是哪個Content Provider提供這些資料。對於第三方應用程式,為了保證URI標識的唯一性,它必須是一個完整的、小寫的類名。這個標識在元素的 authorities屬性中說明:一般是定義該ContentProvider的包類的名稱;
C:路徑(path),通俗的講就是你要操作的資料庫中表的名字,或者你也可以自己定義,記得在使用的時候保持一致就可以了;"content://com.bing.provider.myprovider/tablename"。

D:如果URI中包含表示需要獲取的記錄的ID;則就返回該id對應的資料,如果沒有ID,就表示返回全部; "content://com.bing.provider.myprovider/tablename/#" #表示資料id。


6. 如何訪問 asserts 資源目錄下的資料庫?

把資料庫db複製到 /data/data/packagename/databases/目錄下 然後直接就能訪問了。

7. Android Intent的使用


三大元件——Activity、Service和Broadcast Receiver都是被什麼啟用的?
答案:Intent是一種執行時繫結的訊息機制,而三大元件——Activity、Service和Broadcast Receiver都是被訊息啟用的,這種訊息就是Intent。正如網上一些人解析所說,Intent負責對應用中一次操作的動作、動作涉及資料、附加資料進行描述,Android則根據此Intent的描述,負責找到對應的元件,將 Intent傳遞給呼叫的元件,並完成元件的呼叫。Intent在這裡起著實現呼叫者與被呼叫者之間的解耦作用。

 一個Intent物件包括六個屬性,請一一列舉這六個屬性。
答案:元件名(Component Name)、動作(Action)、資料(Data)、分類(Category)、額外資訊(Extra)和標誌(Flags)。

  Intent傳遞過程中,要找到目標消費者(另一個Activity,IntentReceiver或Service),也就是Intent的響應者,有兩種方法來匹配:

1、顯示意圖:

Intent intent = new Intent(TestA.this,TestB.this);
this.startActivity(intent);

2、隱式意圖:

隱式匹配,首先要匹配Intent的幾項值:Action, Category, Data/Type,Component 
如果填寫了Componet就是上例中的Test.class這就形成了顯示匹配。所以此部分只講前幾種匹配。匹配規則為最大匹配規則。

9、IntentFilter(Intent過濾器) 


為什麼要引入IntentFilter? 
答案:對於顯式Intent,它的接受者已被指定,所以系統會自動把這個Intent發給指定的元件。但是對於隱式Intent,由於並沒有指定其元件名屬性,所以系統不知道該把它發給哪個元件名,於是系統就直接將其發出去,算是所有的元件都有權接收,這就需要定義一個元件可以接收到哪些Intent,所以就引入了IntentFilter(Intent過濾器)。

10、Intent 傳遞資料時,可以傳遞哪些型別資料? 


Intent 可以傳遞的資料型別非常的豐富,java 的基本資料型別和 String 以及他們的陣列形式都可以,除此之 外還可以傳遞實現了 Serializable 和 Parcelable 介面的物件。
 

原文:https://blog.csdn.net/vfush/article/details/51482296 

相關推薦

Android 面試總結ContentProvider

1、ContentProvider 是如何實現資料共享的: 在 Android 中如果想將自己應用的資料(一般多為資料庫中的資料)提供給第三發應用,那麼我們只能通過 ContentProvider 來實現了。 ContentProvider 是應用程式之間共享資料的介面。使

Android 面試總結佈局常見問題

1、Android 中常用的佈局都有哪些?  FrameLayout RelativeLayout LinearLayout AbsoluteLayout TableLayout GrideLayout(Android 4.0 推出) 2、談談 UI 中, Paddin

Android面試總結系列面試技巧

文章目錄 面試官:Android動畫用過嗎? 我:用過一些簡單的。 面試官:那就簡單講一下吧!!! 本篇文章將根據我這些年面試和被面試的經驗來總結面試技巧,給各位迷茫的同學做個參考。 我認為面試問題一般都可以被分兩大類: 一類是公司專

面試總結mysql

知識 一個 details mysql常用命令 target lte itl evo 效率 總結自己在面試過程遇到的數據庫問題,以備不時之需。 1、你在你們公司用的什麽版本的mysql數據庫,用過mysql5.7嗎? 在學校學習mysql的時候用的5.5,在公司的時候用

Android面試Service

UNC roi upload div 也不會 但是 () 調用順序 總結 Service是什麽 Service(服務)是一個沒有用戶界面的在後臺運行執行耗時操作的應用組件。其他應用組件能夠啟動Service,並且當用戶切換到另外的應用場景,Service將持續在後臺運行。

面試總結統計商品的曝光率

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> .co

Android面試集錦Activity(知識整理)

面試集錦是參考了慕課網BAT某大神的視訊。 本文分為四個部分: 1.Activity生命週期 2.Activity任務棧 3.Activity啟動模式 4.scheme跳轉協議 一、Activity的生命週期 什麼是Activity? android與使用者進行互動的時候,

Android面試集錦Service(知識整理)

本文主要講解兩個部分: 一、service的應用場景,以及和Thread的區別 二、開啟service的兩種方式以及區別 第一部分又可以分為: Service基礎: 1.Service是什麼? Service是一種可以在後臺執行長時間執行操作而沒有使用者介面的應用元件。 可

Android面試集錦Fragment(知識整理)

一、Fragment為什麼被稱為第五大元件 使用頻率高,ui切換效果好,更節省記憶體,因為其有自己的生命週期,所以也算不到四大元件裡取;fragment必須依附於activity存在。 二、Fragment載入到activity中的兩個方式 靜態載入,動態載入,(太基礎了不說了) 三

Android四大元件ContentProvider(二)

上節提到的四大元件之ContentProvider的簡單使用,在這篇文章中詳細的介紹其中的一些方法。 1.String getType(Uri uri)方法 首先看看官方對它的解釋: /** * Implement this to handle requests

Android四大元件ContentProvider(一)

1.什麼是ContentProvider? 內容提供程式管理對資料結構化資料集的訪問。它們封裝資料,並提供用於定義資料安全性的機制。內容提供者是連線一個程序中的資料與另一個程序中執行的程式碼的標準介面。 是不同應用程式之間進行資料交換的標準API,以某種Uri的形式對外提供資料,

android官方APIContentProvider

來源:https://developer.android.com/reference/android/content/ContentProvider ContentProvider public abstract class ContentProvider extends 

Android四大元件ContentProvider

關於ContentProvider ContentProvider,被稱為內容提供者,通過Binder向其他元件以及其他應用提供資料。以某種Uri的形式對外提供資料,允許其他應用訪問或修改資料。其他應用程式使用ContentResolver根據Uri去訪問操作

Android面試總結--Android

Activity生命週期 圖中需要注意一下幾點: 1.Activity例項是由系統自動建立,並在不同的狀態期間回撥相應的方法。一個最簡單的完整的Activity生命週期會按照如下順序回撥:onCreate -> onStart -> onResum

面試總結time_wait狀態產生的原因,危害,如何避免

前言 請說說你對TCP連線中time_wait狀態的理解 解答: 先上TCP的狀態變遷圖 1. time_wait狀態如何產生?  由上面的變遷圖,首先呼叫close()發起主動關閉的一方,在傳送最後一個ACK之後會進入time_wait的狀態,也就說該傳送方會保

Android面試系列Handler機制篇

1.什麼是Handler?   Handler是可以通過傳送和處理Message和Runnable物件來關聯相應執行緒的MessageQueue。通常我們認為它是一種非同步機制。   a.可以讓對應的Message和Runnable在未來的某個時間點進行相應的處理。   

Android四大元件ContentProvider詳解

1.適用場景 1) ContentProvider為儲存和讀取資料提供了統一的介面 2) 使用ContentProvider,應用程式可以實現資料共享 3) android內建的許多資料都是使用ContentProvider形式,供開發者呼叫的(如視訊,音訊,圖片,

Android面試系列Android基礎知識

這兩天就要換工作了,為了拿到offer,是時候來一波面試準備了!希望自己能找到心儀的工作。也希望這篇部落格能幫助到大家。 本篇部落格是相對基礎的知識,雖然是基礎,但是很重要,你能保證你都記住了麼? Activity相關 Activity是四大元件之一,

前端面試總結http、html和瀏覽器

前言:本文是轉載文,文章中的'我'指原作者 1.http和https https的SSL加密是在傳輸層實現的。 (1)http和https的基本概念 http: 超文字傳輸協議,是網際網路上應用最為廣泛的一種網路協議,是一個客戶端和伺服器端請求和應答的標準(TCP),用於從WWW伺服

C++面試總結常用基礎知識

轉載自:https://www.jianshu.com/p/e21d99638cf9C++程式設計師面試一般都是以下三板斧1.基礎問答2.然後一頓虛擬函式、虛擬函式表、純虛擬函式、抽象類、解構函式、拷貝建構函式3.運算元過載、STL、智慧指標-------------------分割線------------