Android面試常見問題

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?JAVA部分:

1.equals與==的區(qū)別:

==是判斷兩個(gè)變量或?qū)嵗遣皇侵赶蛲粋€(gè)內(nèi)存空間equals是判斷兩個(gè)變量或?qū)嵗赶虻膬?nèi)存空間的值是不是相同薛窥。

2. Hashcode的作用播揪,與equal有什么區(qū)別

為了鑒定2個(gè)對(duì)象是否相等的鳞溉,java集合中有l(wèi)ist和set兩類辅肾,其中set不允許元素重復(fù)實(shí)現(xiàn),那個(gè)這個(gè)不允許重復(fù)實(shí)現(xiàn)的方法,如果用equal去比較的話,如果存在1000個(gè)元素汹粤,你new一個(gè)新的元素出來,需要去調(diào)用1000次equal去逐個(gè)和他們比較是否是同一個(gè)對(duì)象田晚,這樣會(huì)大大降低效率嘱兼。hashcode實(shí)際上是返回對(duì)象的存儲(chǔ)地址,如果這個(gè)位置上沒有元素贤徒,就把元素直接存儲(chǔ)在上面芹壕,如果這個(gè)位置上已經(jīng)存在元素汇四,這個(gè)時(shí)候才去調(diào)用equal方法與新元素進(jìn)行比較,相同的話就不存了踢涌,散列到其他地址上通孽。

3. String、StringBuffer與StringBuilder的區(qū)別

String類型和StringBuffer類型的主要性能區(qū)別其實(shí)在于String是不可變的對(duì)象斯嚎,StringBuffer和StringBuilder底層是char[]數(shù)組實(shí)現(xiàn)的利虫。StringBuffer是線程安全的挨厚,而StringBuilder是線程不安全的堡僻。

4. Override和Overload的含義去區(qū)別

Overload顧名思義是重新加載,它可以表現(xiàn)類的多態(tài)性,疫剃。函數(shù)里面可以有相同的函數(shù)名钉疫,但是參數(shù)名、返回值巢价、類型不能相同牲阁;或者說可以改變參數(shù)、類型壤躲、返回值但是函數(shù)名字依然不變城菊。Override顧名思義就是ride(重寫)的意思,在子類繼承父類的時(shí)候子類中可以定義某方法與其父類有相同的名稱和參數(shù)碉克,當(dāng)子類在調(diào)用這一函數(shù)時(shí)自動(dòng)調(diào)用子類的方法凌唬,而父類相當(dāng)于被覆蓋(重寫)了。

5.抽象類和接口的區(qū)別

一個(gè)類只能繼承單個(gè)類漏麦,但是可以實(shí)現(xiàn)多個(gè)接口接口強(qiáng)調(diào)特定功能的實(shí)現(xiàn)客税,而抽象類強(qiáng)調(diào)所屬關(guān)系抽象類中的所有方法并不一定要是抽象的,你可以選擇在抽象類中實(shí)現(xiàn)一些基本的方法撕贞。而接口要求所有的方法都必須是抽象的更耻。

6.wait()和sleep()的區(qū)別

(1)sleep來自Thread類,wait來自O(shè)bject類

(2)調(diào)用sleep()方法的過程中捏膨,線程不會(huì)釋放對(duì)象鎖秧均。而 調(diào)用wait方法線程會(huì)釋放對(duì)象鎖

(3)sleep睡眠后不出讓系統(tǒng)資源,wait讓出系統(tǒng)資源其他線程可以占用CPU

(4)sleep(milliseconds)需要指定一個(gè)睡眠時(shí)間号涯,時(shí)間一到會(huì)自動(dòng)喚醒

6.JAVA多態(tài)的實(shí)現(xiàn)原理

抽象的來講目胡,多態(tài)的意思就是同一消息可以根據(jù)發(fā)送對(duì)象的不同而采用多種不同的行為方式。(發(fā)送消息就是函數(shù)調(diào)用)實(shí)現(xiàn)的原理是動(dòng)態(tài)綁定诚隙,程序調(diào)用的方法在運(yùn)行期才動(dòng)態(tài)綁定.

7.怎么判斷一個(gè)對(duì)象是否需要收集讶隐?

(1)引用計(jì)數(shù)(最簡(jiǎn)單古老的方法):將資源(可以是對(duì)象、內(nèi)存或磁盤空間等等)的被引用次數(shù)保存起來久又,當(dāng)被引用次數(shù)變?yōu)榱銜r(shí)就將其釋放

(2)對(duì)象引用遍歷(現(xiàn)在大多數(shù)jvm使用的方法):對(duì)象引用遍歷從一組對(duì)象開始巫延,沿著整個(gè)對(duì)象圖上的每條鏈接效五,遞歸確定可到達(dá)的對(duì)象。如果某對(duì)象不能從這些根對(duì)象的一個(gè)到達(dá)炉峰,則將它作為垃圾收集.

8.Java的四種引用的區(qū)別

(1)強(qiáng)引用:如果一個(gè)對(duì)象具有強(qiáng)引用畏妖,它就不會(huì)被垃圾回收器回收。即使當(dāng)前內(nèi)存空間不足疼阔,JVM也不會(huì)回收它戒劫,而是拋出OutOfMemoryError錯(cuò)誤,使程序異常終止婆廊。如果想中斷強(qiáng)引用和某個(gè)對(duì)象之間的關(guān)聯(lián)迅细,可以顯式地將引用賦值為null,這樣一來的話淘邻,JVM在合適的時(shí)間就會(huì)回收該對(duì)象

(2)軟引用:在使用軟引用時(shí)茵典,如果內(nèi)存的空間足夠,軟引用就能繼續(xù)被使用宾舅,而不會(huì)被垃圾回收器回收统阿,只有在內(nèi)存不足時(shí),軟引用才會(huì)被垃圾回收器回收筹我。

(3)弱引用:具有弱引用的對(duì)象擁有的生命周期更短暫扶平。因?yàn)楫?dāng)JVM進(jìn)行垃圾回收,一旦發(fā)現(xiàn)弱引用對(duì)象蔬蕊,無論當(dāng)前內(nèi)存空間是否充足结澄,都會(huì)將弱引用回收。不過由于垃圾回收器是一個(gè)優(yōu)先級(jí)較低的線程袁串,所以并不一定能迅速發(fā)現(xiàn)弱引用對(duì)象

(4)虛引用:顧名思義概而,就是形同虛設(shè),如果一個(gè)對(duì)象僅持有虛引用囱修,那么它相當(dāng)于沒有引用赎瑰,在任何時(shí)候都可能被垃圾回收器回收。

9.ArrayList破镰、LinkedList餐曼、Vector的區(qū)別

(1)ArrayList和Vector底層是采用數(shù)組方式存儲(chǔ)數(shù)據(jù),Vector由于使用了synchronized方法(線程安全)所以性能上比ArrayList要差

(2)LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ)鲜漩,隨機(jī)存取比較慢

(3)HashMap的底層源碼實(shí)現(xiàn):當(dāng)我們往HashMap中put元素的時(shí)候源譬,先根據(jù)key的hashCode重新計(jì)算hash值,根據(jù)hash值得到這個(gè)元素在數(shù)組中的位置(即下標(biāo))孕似,如果數(shù)組該位置上已經(jīng)存放有其他元素了踩娘,那么在這個(gè)位置上的元素將以鏈表的形式存放,新加入的放在鏈頭喉祭,最先加入的放在鏈尾养渴。如果數(shù)組該位置上沒有元素雷绢,就直接將該元素放到此數(shù)組中的該位置上。

10.HashMap和 HashTable 的區(qū)別

HashTable比較老理卑,是基于Dictionary類實(shí)現(xiàn)的翘紊,HashTable則是基于Map接口實(shí)現(xiàn)的。HashTable是線程安全的藐唠,HashMap則是線程不安全的帆疟。HashMap可以讓你將空值作為一個(gè)表的條目的key或value。

11.什么是線程池宇立,線程池的作用是什么

線程池就是開辟一塊內(nèi)存空間踪宠,里面存放了眾多(未死亡)的線程,池中線程執(zhí)行調(diào)度由池管理器來處理泄伪。當(dāng)有線程任務(wù)時(shí)殴蓬,從池中取一個(gè),執(zhí)行完成后線程對(duì)象歸池蟋滴,這樣可以避免反復(fù)創(chuàng)建線程對(duì)象所帶來的性能開銷,節(jié)省了系統(tǒng)的資源痘绎。

java線程池的作用:a.重用存在的線程津函,減少對(duì)象創(chuàng)建、消亡的開銷孤页,性能佳尔苦。b.可有效控制最大并發(fā)線程數(shù),提高系統(tǒng)資源的使用率行施,同時(shí)避免過多資源競(jìng)爭(zhēng)允坚,避免堵塞。c.提供定時(shí)執(zhí)行蛾号、定期執(zhí)行稠项、單線程、并發(fā)數(shù)控制等功能鲜结。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Android部分

1.繪制Activity生命周期流程圖



2.內(nèi)存不足時(shí)系統(tǒng)會(huì)殺掉后臺(tái)的Activity展运,若需要進(jìn)行一些臨時(shí)狀態(tài)的保存,在哪個(gè)方法進(jìn)行精刷?

Activity的onSaveInstanceState()和onRestoreInstanceState()并不是生命周期方法拗胜,它們不同于onCreate()、onPause()等生命周期方法怒允,它們并不一定會(huì)被觸發(fā)埂软。當(dāng)應(yīng)用遇到意外情況(如:內(nèi)存不足、用戶直接按Home鍵)由系統(tǒng)銷毀一個(gè)Activity纫事,onSaveInstanceState()會(huì)被調(diào)用勘畔。但是當(dāng)用戶主動(dòng)去銷毀一個(gè)Activity時(shí)迷殿,例如在應(yīng)用中按返回鍵,onSaveInstanceState()就不會(huì)被調(diào)用咖杂。除非該activity是被用戶主動(dòng)銷毀的庆寺,通常onSaveInstanceState()只適合用于保存一些臨時(shí)性的狀態(tài),而onPause()適合用于數(shù)據(jù)的持久化保存诉字。

3.onSaveInstanceState()被執(zhí)行的場(chǎng)景有哪些:

系統(tǒng)不知道你按下HOME后要運(yùn)行多少其他的程序懦尝,自然也不知道activity A是否會(huì)被銷毀,因此系統(tǒng)都會(huì)調(diào)用onSaveInstanceState()壤圃,讓用戶有機(jī)會(huì)保存某些非永久性的數(shù)據(jù)陵霉。以下幾種情況的分析都遵循該原則

1.當(dāng)用戶按下HOME鍵時(shí)

2.長(zhǎng)按HOME鍵,選擇運(yùn)行其他的程序時(shí)

3.鎖屏?xí)r

4.從activity A中啟動(dòng)一個(gè)新的activity時(shí)

5.屏幕方向切換時(shí)

4.介紹Activity的幾中啟動(dòng)模式

(1)standard

(2)SingleTop

(3)SingleTask

(4)SingleInstance

5.注冊(cè)Service需要注意什么

Service還是運(yùn)行在主線程當(dāng)中的伍绳,所以如果需要執(zhí)行一些復(fù)雜的邏輯操作踊挠,最好在服務(wù)的內(nèi)部手動(dòng)創(chuàng)建子線程進(jìn)行處理,否則會(huì)出現(xiàn)UI線程被阻塞的問題

6.Service與Activity怎么實(shí)現(xiàn)通信

方法一:

1.添加一個(gè)繼承Binder的內(nèi)部類冲杀,并添加相應(yīng)的邏輯方法

2.重寫Service的onBind方法效床,返回我們剛剛定義的那個(gè)內(nèi)部類實(shí)例

方法二:

通過BroadCast(廣播)的形式 當(dāng)我們的進(jìn)度發(fā)生變化的時(shí)候我們發(fā)送一條廣播,然后在Activity的注冊(cè)廣播接收器权谁,接收到廣播之后更新視圖.

7.IntentService與Service的區(qū)別

IntentService是Service的子類剩檀,是一個(gè)異步的,會(huì)自動(dòng)停止的服務(wù)旺芽,很好解決了傳統(tǒng)的Service中處理完耗時(shí)操作忘記停止并銷毀Service的問題.

IntentService會(huì)創(chuàng)建獨(dú)立的worker線程來處理所有的Intent請(qǐng)求沪猴;會(huì)創(chuàng)建獨(dú)立的worker線程來處理onHandleIntent()方法實(shí)現(xiàn)的代碼,無需處理多線程問題采章;所有請(qǐng)求處理完成后运嗜,IntentService會(huì)自動(dòng)停止,無需調(diào)用stopSelf()方法停止Service悯舟;為Service的onBind()提供默認(rèn)實(shí)現(xiàn)担租,返回null;為Service的onStartCommand提供默認(rèn)實(shí)現(xiàn)图谷,將請(qǐng)求Intent添加到隊(duì)列中翩活;

IntentService不會(huì)阻塞UI線程,而普通Serveice會(huì)導(dǎo)致ANR異常

Intentservice若未執(zhí)行完成上一次的任務(wù)便贵,將不會(huì)新開一個(gè)線程菠镇,是等待之前的任務(wù)完成后,再執(zhí)行新的任務(wù)承璃,等任務(wù)完成后再次調(diào)用stopSelf().

8.介紹Handle的機(jī)制

·Handler通過調(diào)用sendmessage方法把消息放在消息隊(duì)列MessageQueue中利耍,Looper負(fù)責(zé)把消息從消息隊(duì)列中取出來,重新再交給Handler進(jìn)行處理,三者形成一個(gè)循環(huán)

·通過構(gòu)建一個(gè)消息隊(duì)列隘梨,把所有的Message進(jìn)行統(tǒng)一的管理程癌,當(dāng)Message不用了,并不作為垃圾回收轴猎,而是放入消息隊(duì)列中嵌莉,供下次handler創(chuàng)建消息時(shí)候使用,提高了消息對(duì)象的復(fù)用捻脖,減少系統(tǒng)垃圾回收的次數(shù)

·每一個(gè)線程锐峭,都會(huì)單獨(dú)對(duì)應(yīng)的一個(gè)looper,這個(gè)looper通過ThreadLocal來創(chuàng)建可婶,保證每個(gè)線程只創(chuàng)建一個(gè)looper沿癞,looper初始化后就會(huì)調(diào)用looper.loop創(chuàng)建一個(gè)MessageQueue,這個(gè)方法在UI線程初始化的時(shí)候就會(huì)完成矛渴,我們不需要手動(dòng)創(chuàng)建.

9.ListView卡頓的原因與性能優(yōu)化椎扬,越多越好

(1)重用converView:通過復(fù)用converview來減少不必要的view的創(chuàng)建,另外Infalte操作會(huì)把xml文件實(shí)例化成相應(yīng)的View實(shí)例具温,屬于IO操作蚕涤,是耗時(shí)操作。

(2)減少findViewById()操作:將xml文件中的元素封裝成viewholder靜態(tài)類桂躏,通過converview的setTag和getTag方法將view與相應(yīng)的holder對(duì)象綁定在一起钻趋,避免不必要的findviewbyid操作

(3)避免在getView方法中做耗時(shí)的操作:例如加載本地Image需要載入內(nèi)存以及解析Bitmap,都是比較耗時(shí)的操作剂习,如果用戶快速滑動(dòng)listview,會(huì)因?yàn)間etview邏輯過于復(fù)雜耗時(shí)而造成滑動(dòng)卡頓現(xiàn)象较沪。用戶滑動(dòng)時(shí)候不要加載圖片鳞绕,待滑動(dòng)完成再加載,可以使用這個(gè)第三方庫(kù)glide

(4)Item的布局層次結(jié)構(gòu)盡量簡(jiǎn)單尸曼,避免布局太深或者不必要的重繪

(5)盡量能保證Adapter的hasStableIds()返回true這樣在notifyDataSetChanged()的時(shí)候们何,如果item內(nèi)容并沒有變化,ListView將不會(huì)重新繪制這個(gè)View控轿,達(dá)到優(yōu)化的目的

(6)在一些場(chǎng)景中冤竹,ScollView內(nèi)會(huì)包含多個(gè)ListView,可以把listview的高度寫死固定下來茬射。由于ScollView在快速滑動(dòng)過程中需要大量計(jì)算每一個(gè)listview的高度鹦蠕,阻塞了UI線程導(dǎo)致卡頓現(xiàn)象出現(xiàn),如果我們每一個(gè)item的高度都是均勻的在抛,可以通過計(jì)算把listview的高度確定下來钟病,避免卡頓現(xiàn)象出現(xiàn).

(7)使用RecycleView代替listview:每個(gè)item內(nèi)容的變動(dòng),listview都需要去調(diào)用notifyDataSetChanged來更新全部的item,太浪費(fèi)性能了肠阱。RecycleView可以實(shí)現(xiàn)當(dāng)個(gè)item的局部刷新票唆,并且引入了增加和刪除的動(dòng)態(tài)效果,在性能上和定制上都有很大的改善

(8)ListView中元素避免半透明:半透明繪制需要大量乘法計(jì)算屹徘,在滑動(dòng)時(shí)不停重繪會(huì)造成大量的計(jì)算走趋,在比較差的機(jī)子上會(huì)比較卡。在設(shè)計(jì)上能不半透明就不不半透明噪伊。實(shí)在要弄就把在滑動(dòng)的時(shí)候把半透明設(shè)置成不透明簿煌,滑動(dòng)完再重新設(shè)置成半透明。

(9)盡量開啟硬件加速:硬件加速提升巨大酥宴,避免使用一些不支持的函數(shù)導(dǎo)致含淚關(guān)閉某個(gè)地方的硬件加速啦吧。當(dāng)然這一條不只是對(duì)ListView。

10.如何使用JNI

JAVA中聲明native方法如private native String printJNI(String inputStr);

使用javah工具生成.h頭文件這時(shí)候頭文件中就會(huì)自動(dòng)生成對(duì)應(yīng)的函數(shù)JNIEXPORT jstring JNICALL Java_com_wenming_HelloWorld_printJNI

實(shí)現(xiàn)JNI原生函數(shù)源文件拙寡,新建HelloWorld.c文件授滓,對(duì)剛才自動(dòng)生成的函數(shù)進(jìn)行具體的邏輯書寫,例如返回一個(gè)java叫做HelloWorld的字符串等

編譯生成動(dòng)態(tài)鏈接so文件**

Java中調(diào)用Sysytem.load方法把剛才的so庫(kù)加載進(jìn)來肆糕,就可以調(diào)用native方法了.

11.什么OOM般堆?

OOM全稱是Out Of Merrory,Android系統(tǒng)的每一個(gè)應(yīng)用程序都設(shè)置一個(gè)硬性的Dalvik Heap Size最大限制閾值诚啃,如果申請(qǐng)的內(nèi)存資源超過這個(gè)限制淮摔,系統(tǒng)就會(huì)拋出OOM錯(cuò)誤.

12.內(nèi)存泄漏有哪些場(chǎng)景以及解決方法

(1)類的靜態(tài)變量持有大數(shù)據(jù)對(duì)象,靜態(tài)變量長(zhǎng)期維持到大數(shù)據(jù)對(duì)象的引用,阻止垃圾回收始赎。

(2)非靜態(tài)內(nèi)部類存在靜態(tài)實(shí)例.非靜態(tài)內(nèi)部類會(huì)維持一個(gè)到外部類實(shí)例的引用和橙,如果非靜態(tài)內(nèi)部類的實(shí)例是靜態(tài)的造垛,就會(huì)間接長(zhǎng)期維持著外部類的引用魔招,阻止被回收掉。

(3)資源對(duì)象未關(guān)閉資源性對(duì)象比如(Cursor五辽,F(xiàn)ile文件等)往往都用了一些緩沖办斑,我們?cè)诓皇褂玫臅r(shí)候,應(yīng)該及時(shí)關(guān)閉它們杆逗, 以便它們的緩沖及時(shí)回收內(nèi)存乡翅。解決辦法:比如SQLiteCursor, 如果我們沒有關(guān)閉它罪郊,系統(tǒng)在回收它時(shí)也會(huì)關(guān)閉它蠕蚜,但是這樣的效率太低了。 因此對(duì)于資源性對(duì)象在不使用的時(shí)候排龄,應(yīng)該調(diào)用它的close()函數(shù)波势,將其關(guān)閉掉翎朱,然后才置為null.在我們的程序退出時(shí)一定要確保我們的資源性對(duì)象已經(jīng)關(guān)閉。

(4)Handler內(nèi)存泄漏Handler作為內(nèi)部類存在于Activity中尺铣,但是Handler生命周期與Activity生命周期往往并不是相同的拴曲,比如當(dāng)Handler對(duì)象有Message在排隊(duì),則無法釋放凛忿,進(jìn)而導(dǎo)致本該釋放的Acitivity也沒有辦法進(jìn)行回收澈灼。解決辦法:聲明handler為static類,這樣內(nèi)部類就不再持有外部類的引用了店溢,就不會(huì)阻塞Activity的釋放

12.如何避免OOM問題的出現(xiàn)

(1)使用更加輕量的數(shù)據(jù)結(jié)構(gòu).例如叁熔,我們可以考慮使用ArrayMap/SparseArray而不是HashMap等傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)。通常的HashMap的實(shí)現(xiàn)方式更加消耗內(nèi)存床牧,因?yàn)樗枰粋€(gè)額外的實(shí)例對(duì)象來記錄Mapping操作荣回。

(2)避免在Android里面使用Enum

(3)減小Bitmap對(duì)象的內(nèi)存占用.Bitmap是一個(gè)極容易消耗內(nèi)存的大胖子,減小創(chuàng)建出來的Bitmap的內(nèi)存占用可謂是重中之重.

(4)Bitmap對(duì)象的復(fù)用.縮小Bitmap的同時(shí)戈咳,也需要提高BitMap對(duì)象的復(fù)用率心软,避免頻繁創(chuàng)建BitMap對(duì)象.

(5)使用更小的圖片.在涉及給到資源圖片時(shí),我們需要特別留意這張圖片是否存在可以壓縮的空間著蛙,是否可以使用更小的圖片删铃。盡量使用更小的圖片不僅可以減少內(nèi)存的使用,還能避免出現(xiàn)大量的InflationException踏堡。

(6)StringBuilder在有些時(shí)候猎唁,代碼中會(huì)需要使用到大量的字符串拼接的操作,這種時(shí)候有必要考慮使用StringBuilder來替代頻繁的“+”顷蟆。

(7)避免在onDraw方法里面執(zhí)行對(duì)象的創(chuàng)建.類似onDraw等頻繁調(diào)用的方法诫隅,一定需要注意避免在這里做創(chuàng)建對(duì)象的操作,因?yàn)樗麜?huì)迅速增加內(nèi)存的使用帐偎,而且很容易引起頻繁的gc阎肝,甚至是內(nèi)存抖動(dòng)。

(8)避免對(duì)象的內(nèi)存泄露.

13.什么是ANR?是由于什么原因引起的肮街?

ANR全稱Application Not Responding,意思就是程序未響應(yīng)判导。如果一個(gè)應(yīng)用無法響應(yīng)用戶的輸入嫉父,系統(tǒng)就會(huì)彈出一個(gè)ANR對(duì)話框,用戶可以自行選擇繼續(xù)等待亦或者是停止當(dāng)前程序眼刃。一旦出現(xiàn)下面兩種情況绕辖,則彈出ANR對(duì)話框

·應(yīng)用在5秒內(nèi)未響應(yīng)用戶的輸入事件(如按鍵或者觸摸)

·BroadcastReceiver未在10秒內(nèi)完成相關(guān)的處理

原因:

(1)主線程中存在耗時(shí)的計(jì)算

(2)主線程被IO操作(從4.0之后網(wǎng)絡(luò)IO不允許在主線程中)阻塞。

(3)主線程中錯(cuò)誤的操作擂红,比如Thread.wait或者Thread.sleep等

如何避免ANR問題:

(1)使用AsyncTask處理耗時(shí)IO操作仪际。

(2)使用Handler處理子線程結(jié)果,而不是使用Thread.wait()或者Thread.sleep()來阻塞主線程。

(3)Activity的onCreate和onResume回調(diào)中盡量避免耗時(shí)的代碼

(4)BroadcastReceiver中onReceive方法的操作時(shí)間在10秒之內(nèi)

14.數(shù)據(jù)持久化的四種方式有哪些树碱?

(1)文件存儲(chǔ):通過java.io.FileInputStream和java.io.FileOutputStream這兩個(gè)類來實(shí)現(xiàn)對(duì)文件的讀寫肯适,java.io.File類則用來構(gòu)造一個(gè)具體指向某個(gè)文件或者文件夾的對(duì)象。

(2)SharedPreferences:SharedPreferences是一種輕量級(jí)的數(shù)據(jù)存儲(chǔ)機(jī)制成榜,他將一些簡(jiǎn)單的數(shù)據(jù)類型的數(shù)據(jù)框舔,包括boolean類型,int類型赎婚,float類型刘绣,long類型以及String類型的數(shù)據(jù),以鍵值對(duì)的形式存儲(chǔ)在應(yīng)用程序的私有Preferences目錄(/data/data/<包名>/shared_prefs/)中挣输,這種Preferences機(jī)制廣泛應(yīng)用于存儲(chǔ)應(yīng)用程序中的配置信息纬凤。

(3)SQLite數(shù)據(jù)庫(kù):當(dāng)應(yīng)用程序需要處理的數(shù)據(jù)量比較大時(shí),為了更加合理地存儲(chǔ)撩嚼、管理停士、查詢數(shù)據(jù),我們往往使用關(guān)系數(shù)據(jù)庫(kù)來存儲(chǔ)數(shù)據(jù)绢馍。Android系統(tǒng)的很多用戶數(shù)據(jù)向瓷,如聯(lián)系人信息,通話記錄舰涌,短信息等猖任,都是存儲(chǔ)在SQLite數(shù)據(jù)庫(kù)當(dāng)中的,所以利用操作SQLite數(shù)據(jù)庫(kù)的API可以同樣方便的訪問和修改這些數(shù)據(jù)瓷耙。

(4)ContentProvider:主要用于在不同的應(yīng)用程序之間實(shí)現(xiàn)數(shù)據(jù)共享的功能朱躺,不同于sharepreference和文件存儲(chǔ)中的兩種全局可讀寫操作模式,內(nèi)容提供其可以選擇只對(duì)哪一部分?jǐn)?shù)據(jù)進(jìn)行共享搁痛,從而保證我們程序中的隱私數(shù)據(jù)不會(huì)有泄漏的風(fēng)險(xiǎn).

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末长搀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鸡典,更是在濱河造成了極大的恐慌源请,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彻况,死亡現(xiàn)場(chǎng)離奇詭異谁尸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)纽甘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門良蛮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悍赢,你說我怎么就攤上這事决瞳』踽悖” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵皮胡,是天一觀的道長(zhǎng)痴颊。 經(jīng)常有香客問我,道長(zhǎng)胸囱,這世上最難降的妖魔是什么祷舀? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮烹笔,結(jié)果婚禮上裳扯,老公的妹妹穿的比我還像新娘。我一直安慰自己谤职,他們只是感情好饰豺,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著允蜈,像睡著了一般冤吨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饶套,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天漩蟆,我揣著相機(jī)與錄音,去河邊找鬼妓蛮。 笑死怠李,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛤克。 我是一名探鬼主播捺癞,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼构挤!你這毒婦竟也來了髓介?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤筋现,失蹤者是張志新(化名)和其女友劉穎唐础,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矾飞,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彻犁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凰慈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡驼鹅,死狀恐怖微谓,靈堂內(nèi)的尸體忽然破棺而出森篷,到底是詐尸還是另有隱情,我是刑警寧澤豺型,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布仲智,位于F島的核電站,受9級(jí)特大地震影響姻氨,放射性物質(zhì)發(fā)生泄漏钓辆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一肴焊、第九天 我趴在偏房一處隱蔽的房頂上張望前联。 院中可真熱鬧,春花似錦娶眷、人聲如沸似嗤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)烁落。三九已至,卻和暖如春豌注,著一層夾襖步出監(jiān)牢的瞬間伤塌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工轧铁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留每聪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓属桦,卻偏偏與公主長(zhǎng)得像熊痴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子聂宾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容