對ContentProvider中getType方法的一點理解

在上篇博客中我們介紹了自定義ContentProvider,但是遺漏掉了一個方法,那就是getType,自定義ContentProvider一般用不上getType方法,但我們還是一起來探究下這個方法究竟是干什么的?

我們先來看看ContentProvider中對這個類的定義:

    /*** Implement this to handle requests for the MIME type of the data at the* given URI.  The returned MIME type should start with* <code>vnd.android.cursor.item</code> for a single record,* or <code>vnd.android.cursor.dir/</code> for multiple items.* This method can be called from multiple threads, as described in* <a href="{@docRoot}guide/topics/fundamentals/processes-and-threads.html#Threads">Processes* and Threads</a>.** <p>Note that there are no permissions needed for an application to* access this information; if your content provider requires read and/or* write permissions, or is not exported, all applications can still call* this method regardless of their access permissions.  This allows them* to retrieve the MIME type for a URI when dispatching intents.** @param uri the URI to query.* @return a MIME type string, or {@code null} if there is no type.*/public abstract @Nullable String getType(@NonNull Uri uri);
注釋說的也算是比較清楚了,根據給定的Uri返回一個MIME類型的數據,如果是單條數據,那么我們的MIME類型應該以vnd.android.cursor.item開頭,如果是多條數據,我們的MIME類型的數據應該以vnd.android.cursor.dir開頭,同時,注釋還很明確的告訴我們,對于沒有訪問該ContentProvider權限的應用依然可以調用它的getType方法。

那么我們先來看看什么是MIME,根據維基百科上的解釋,MIME是多用途互聯網郵件擴展(MIME,Multipurpose Internet Mail Extensions)是一個互聯網標準,這話太籠統,大家可以 看看w3c上的解釋http://www.w3school.com.cn/media/media_mimeref.asp,這里有詳細的舉例。

參考網上的信息,getType的作用應該是這樣的,以指定的兩種方式開頭,android可以順利識別出這是單條數據還是多條數據,比如在上篇博客中,我們的查詢結果是一個Cursor,我們可以根據getType方法中傳進來的Uri判斷出query方法要返回的Cursor中只有一條數據還是有多條數據,這個有什么用呢?如果我們在getType方法中返回一個null或者是返回一個自定義的android不能識別的MIME類型,那么當我們在query方法中返回Cursor的時候,系統要對Cursor進行分析,進而得出結論,知道該Cursor只有一條數據還是有多條數據,但是如果我們按照Google的建議,手動的返回了相應的MIME,那么系統就不會自己去分析了,這樣可以提高一丟點的系統性能。基于此,我們上篇自定義的ContentProvider中的getType方法可以這么寫:

	@Overridepublic String getType(Uri uri) {int code = matcher.match(uri);switch (code) {case 1:// 查詢多條數據return "vnd.android.cursor.dir/multi";case 2:case 3:// 根據id或者姓名查詢一條數據return "vnd.android.cursor.item/single";}return null;}
MIME前面的一部分我們按照Google的要求來寫,后面一部分就可以根據我們自己的實際需要來寫。

還有一種我們可能會很少遇到的情況,我們有可能不知道ContentProvider返回給我們的是什么,這個時候我們可以先調用ContentProvider的getType,根據getType的不同返回值做相應的處理。

就這些,歡迎拍磚指正。

轉載于:https://www.cnblogs.com/lenve/p/5865920.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397136.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397136.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397136.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

手把手教Electron+vue的使用

.現如今前端框架數不勝數&#xff0c;尤其是angular、vue吸引一大批前端開發者&#xff0c;在這個高新技術快速崛起的時代&#xff0c;自然少不了各種框架的結合使用。接下來是介紹electronvue的結合使用。 2.Electron是什么&#xff1f;&#xff1f; 對于我來說Electron相當于…

shell循環和分支

循環和分支對代碼塊的操作是構造組織shell腳本的關鍵. 循環和分支結構為腳本編程提供了操作代碼塊的工具.10.1. Loops循環就是重復一些命令的代碼塊,如果條件不滿足就退出循環.for loopsfor arg in [list]這是一個基本的循環結構.它與C的for結構有很大不同.forarg in [list]do …

mysql主從_MySQL主從原理及配置詳解

MySQL主從配置及原理&#xff0c;供大家參考&#xff0c;具體內容如下一、環境選擇&#xff1a;1.Centos 6.52.MySQL 5.7二、什么是MySQL主從復制MySQL主從復制是其最重要的功能之一。主從復制是指一臺服務器充當主數據庫服務器&#xff0c;另一臺或多臺服務器充當從數據庫服務…

引導修復 不是活動的_河南省視頻數據修復中心

河南省視頻數據修復中心 lk6afds河南省視頻數據修復中心 文件預覽我找到了我要恢復文件&#xff0c;可是&#xff0c;這個文件能能正確恢復呢。沒有用的文件不可以刪掉嗎。我們先來看看盤文件夾都是什么吧。(以下僅限于~系統)一般來說&#xff0c;剛剛安裝的電腦系統盤主要包含…

企業日志分析 五大問題需重點注意

資訊 | 安全 | 論壇 | 下載 | 讀書 | 程序開發 | 數據庫 | 系統 | 網絡 | 電子書 | 微信學院 | 站長學院 | 源碼 | QQ | 專欄 | 考試 | 系統安全| 網站安全| 企業安全| 網絡安全| 工具軟件| 殺毒防毒| 加密解密|首頁 > 安全 > 企業安全 > 正文企業安全…

sqlite換成mysql_從SQLITE的數據轉到MYSQL

接同事需求&#xff0c;要求從SQLITE的數據轉到MYSQL&#xff0c;這東西以前也沒接觸過。這里搜搜&#xff0c;那里試試&#xff0c;下面把過程列一下。主要過程分三步&#xff1a;1&#xff0c;把SQLITE表結構導出來&#xff0c;作一定的格式調整2&#xff0c;把SQLITE數據導出…

python學習筆記(一):python入門

上周六終于開始接觸心心念念的python了&#xff0c;本人學習語言算是零基礎&#xff0c;java語法比較復雜&#xff0c;所以選擇了一個語法相對還是比較簡單&#xff0c;而且現在使用也是越來越廣泛的python進行了學習。下面就言歸正傳吧 在學習python之前先來了解下現今比較流行…

MySQL查詢優化之explain的深入解析

在分析查詢性能時&#xff0c;考慮EXPLAIN關鍵字同樣很管用。EXPLAIN關鍵字一般放在SELECT查詢語句的前面&#xff0c;用于描述MySQL如何執行查詢操作、以及MySQL成功返回結果集需要執行的行數。explain 可以幫助我們分析 select 語句,讓我們知道查詢效率低下的原因,從而改進我…

怎么驗證proftpd安裝成功_英雄聯盟手游泰服安卓賬號怎么注冊

英雄聯盟手游中泰服安卓賬號怎么注冊&#xff1f;泰服安卓賬號的注冊流程是怎樣的&#xff1f;泰服安卓賬號的注冊與其他服安卓賬號的注冊是否一致&#xff1f;接下來就給介紹下手游中泰服安卓賬號的注冊&#xff0c;希望對各位玩家能有所幫助。英雄聯盟游戲新泰服安卓賬號怎樣…

oracle實現mysql的if_oracle中decode函數 VS mysql中的if函數和case函數

oracle中有decode函數&#xff0c;如下&#xff1a;select sum(decode(sex&#xff0c;男&#xff0c;0,1)) 男生數 from school&#xff1b;統計男生數目&#xff0c;含義為&#xff1a;decode()中sex字段為男時&#xff0c;用1代替&#xff0c;然后計算總和而mysql中沒有該函…

mysql 刪掉重復數據

--不知道為啥這個mysql外邊還要包一層&#xff0c;不然就報錯DELETE FROMcourse WHEREname IN ( select mm.name from (SELECTa.name as nameFROMcourse aGROUP BYa. NAMEHAVINGcount(a.NAME) > 1)mm) AND id NOT IN ( select nn.id from (SELECTmin(id) as idFROMcours…

spring中用到哪些設計模式

1.工廠模式&#xff0c;這個很明顯&#xff0c;在各種BeanFactory以及ApplicationContext創建中都用到了&#xff1b; 2.模版模式&#xff0c;這個也很明顯&#xff0c;在各種BeanFactory以及ApplicationContext實現中也都用到了&#xff1b; 3.代理模式&#xff0c;在Aop實現中…

visio對象放入word顯示不全_辦公人士必學visio技能 手把手教你使用visio繪制項目全景圖!...

Hi,大家好&#xff01;我是愛踢汪。今天本汪想問問你用什么總結項目&#xff0c;Word、PPT還是視頻&#xff1f;下面我們聊聊畫圖。畫圖固然是為了好看&#xff0c;視覺上的沖擊加深印象。更重要的是&#xff0c;圖像模型帶來的“潛臺詞”&#xff0c;有意想不到的效果&#xf…

java 回調函數很好懂

首先先介紹回調函數的概念。比如客戶端client&#xff0c;想要調用服務器端server的某個函數為你提供服務。比如炒西紅柿炒蛋&#xff0c;cookTomato() 這時候&#xff0c;服務器端說&#xff0c;你先付錢才能為你服務&#xff0c;這時候服務器端要調用客戶端的getMoney().才能…

mongoDB操作詳細

簡介 它和我們使用的關系型數據庫最大的區別就是約束性,可以說文件型數據庫幾乎不存在約束性,理論上沒有主外鍵約束,沒有存儲的數據類型約束等等 關系型數據庫中有一個 "表" 的概念,有 "字段" 的概念,有 "數據條目" 的概念 MongoDB中也同樣有以上…

mysql 存儲過程 on_MySQL存儲過程的權限問題小結

MySQL的存儲過程&#xff0c;沒錯&#xff0c;看起來好生僻的使用場景。問題源于一個開發同學提交了權限申請的工單&#xff0c;需要開通一些權限。本來是一個很正常的操作&#xff0c;但在我來看是比較著急且緊迫的&#xff0c;說來慚愧&#xff0c;忙著方向規劃和開發的事情&…

搜索引擎蜘蛛爬蟲原理

permike 原文 搜索引擎蜘蛛爬蟲原理 關于搜索引擎的大話還是少說些&#xff0c;下面開始正文搜索引擎蜘蛛爬蟲原理&#xff1a; 1 聚焦爬蟲工作原理及關鍵技術概述 網絡爬蟲是一個自動提取網頁的程序&#xff0c;它為搜索引擎從Internet網上下載網頁&#xff0c;是搜索引擎的重…

《Android開發藝術探索》讀書筆記 (10) 第10章 Android的消息機制

第10章 Android的消息機制 10.1 Android消息機制概述 (1)Android的消息機制主要是指Handler的運行機制&#xff0c;其底層需要MessageQueue和Looper的支撐。MessageQueue是以單鏈表的數據結構存儲消息列表但是以隊列的形式對外提供插入和刪除消息操作的消息隊列。MessageQueue只…

mysql索引引擎_mysql搜索引擎和索引那些事

mysql的存儲引擎三種存儲方式**InnoDB **(默認)一個文件存儲表結構&#xff0c;一個存儲數據和目錄(索引)# 一個文件 book_name | author| press | price | pub_date frm文件 frame的縮寫# 另一個文件(數據 目錄)# | 倚天屠龍記 | egon | 北京工業地雷出版社 | 70.00 | 2019-07…

SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元

【題目分析】 Matrix-Tree定理高斯消元 求矩陣行列式的值&#xff0c;就可以得到生成樹的個數。 至于證明&#xff0c;可以去看Vflea King&#xff08;炸樹狂魔&#xff09;的博客 【代碼】 #include <cmath> #include <cstdio> #include <cstring> #include…