Android知識點(diǎn)

Android 中數(shù)據(jù)存儲方式有哪些岸霹?

xml、sharedpreferences裁蚁、SQLiteDataBase、ContentProvider继准、文件存儲枉证,網(wǎng)絡(luò)存儲

Android 的安全機(jī)制

1、Android 是基于Linux 內(nèi)核的移必,因此Linux 對文件權(quán)限的控制同樣適用于Android

在Android 中每個應(yīng)用都有自己的/data/data/包名文件夾室谚,該文件夾只能該應(yīng)用訪問,而其他應(yīng)用則無權(quán)訪問崔泵。

2秒赤、Android 的權(quán)限機(jī)制保護(hù)了用戶的合法權(quán)益

如果我們的代碼想撥打電話、發(fā)送短信憎瘸、訪問通信錄入篮、定位、訪問sdcard 等所有可能侵犯用于權(quán)益的行為都是必須要在AndroidManifest.xml 中進(jìn)行聲明的幌甘,這樣就給了用戶一個知情權(quán)潮售。

3、Android 的代碼混淆保護(hù)了開發(fā)者的勞動成果

Android 的四大組件都需要在清單文件中注冊嗎锅风?

Activity 酥诽、Service 、ContentProvider 如果要使用則必須在AndroidManifest.xml 中進(jìn)行注冊皱埠, 而

BroadcastReceiver 則有兩種注冊方式肮帐,靜態(tài)注冊和動態(tài)注冊。其中靜態(tài)注冊就是指在AndroidManifest.xml 中進(jìn)行注冊边器,而動態(tài)注冊時通過代碼注冊

Android 中進(jìn)程的級別有哪些训枢?

Foreground process、Visible process饰抒、Service process、Background process诀黍、Empty process

Activity 的狀態(tài)都有哪些袋坑?

Foreground Activity、Visible Activity、Background process枣宫、Empty process

Activity 生命周期?here

如何保存Activity 的狀態(tài)婆誓?

Activity 的狀態(tài)通常情況下系統(tǒng)會自動保存的,只有當(dāng)我們需要保存額外的數(shù)據(jù)時才需要使用到這樣的功能也颤。

一般來說, 調(diào)用onPause()和onStop()方法后的activity 實(shí)例仍然存在于內(nèi)存中, activity 的所有信息和狀態(tài)數(shù)據(jù)不會消失, 當(dāng)activity 重新回到前臺之后, 所有的改變都會得到保留洋幻。

但是當(dāng)系統(tǒng)內(nèi)存不足時, 調(diào)用onPause()和onStop()方法后的activity 可能會被系統(tǒng)摧毀, 此時內(nèi)存中就不會存有該activity 的實(shí)例對象了。如果之后這個activity 重新回到前臺, 之前所作的改變就會消失翅娶。為了避免此種情況的發(fā)生文留,我們可以覆寫onSaveInstanceState()方法。onSaveInstanceState()方法接受一個Bundle 類型的參數(shù), 開發(fā)者可以將狀態(tài)數(shù)據(jù)存儲到這個Bundle 對象中, 這樣即使activity 被系統(tǒng)摧毀, 當(dāng)用戶重新啟動這個activity 而調(diào)用它的onCreate()方法時, 上述的Bundle 對象會作為實(shí)參傳遞給onCreate()方法, 開發(fā)者可以從Bundle 對象中取出保存的數(shù)據(jù), 然后利用這些數(shù)據(jù)將activity 恢復(fù)到被摧毀之前的狀態(tài)竭沫。

需要注意的是, onSaveInstanceState()方法并不是一定會被調(diào)用的, 因?yàn)橛行﹫鼍笆遣恍枰4鏍顟B(tài)數(shù)據(jù)的. 比如用戶按下BACK 鍵退出activity 時, 用戶顯然想要關(guān)閉這個activity, 此時是沒有必要保存數(shù)據(jù)以供下次恢復(fù)的, 也就是onSaveInstanceState()方法不會被調(diào)用. 如果調(diào)onSaveInstanceState()方法, 調(diào)用將發(fā)生在onPause()或onStop()方法之前燥翅。

橫豎屏切換時Activity 的生命周期

不設(shè)置Activity 的android:configChanges,切屏?xí)匦抡{(diào)用各個生命周期蜕提。默認(rèn)先銷毀然后重新加載森书。

設(shè)置Activity 的android:configChanges="orientation|keyboardHidden|screenSize"時,切屏不會重新調(diào)用各個生命周期谎势,只會執(zhí)行onConfigurationChanged 方法

將一個Activity 設(shè)置成窗口的樣式

Activity 配置屬性凛膏。android:theme="@android:style/Theme.Dialog"

如何退出Activity?如何安全退出已調(diào)用多個Activity 的Application脏榆?

1猖毫、記錄打開的activity,遍歷數(shù)組去finish

2姐霍、發(fā)送特定廣播

Activity四種啟動模式

1鄙麦、standard:進(jìn)出棧,沒有特別的

2镊折、singleTop:如果在棧頂胯府,就不會new對象

3、singleTask:在此Activity頂部的會出棧

4恨胚、singleInstance:獨(dú)占一個棧

在AndroidManifest.xml里面有局限性骂因,一般是在intent.setFlags里設(shè)置FLAG_ACTIVITY_CLEAR_TOP and FLAG_ACTIVITY_SINGLE_TOP使用,可以更加靈活的達(dá)到singleTask和singleTop的效果赃泡。

Service 的生命周期?here

什么是IntentService寒波??here

Service 里面可以彈吐司么?

可以升熊。有一個Context 就行

Activity 調(diào)用Service 中的方法?here

Activity 如何給Service 發(fā)送Message俄烁?

Service 如何給Activity 發(fā)送Message??activity和service通信

描述BroadcastReceiver

無序廣播:完全異步级野,邏輯上可以被任何廣播接收者接收到页屠。優(yōu)點(diǎn)是效率較高。缺點(diǎn)是一個接收者不能將處理結(jié)果傳遞給下一個接收者,并無法終止廣播intent 的傳播辰企。

有序廣播:按照被接收者的優(yōu)先級順序风纠,在被接收者中依次傳播。比如有三個廣播接收者A牢贸,B竹观,C,優(yōu)先級是A >B > C潜索。那這個消息先傳給A臭增,再傳給B,最后傳給C帮辟。每個接收者有權(quán)終止廣播速址,比如B 終止廣播,C 就無法接收到由驹。

本地廣播:

全局廣播:

此外A 接收到廣播后可以對結(jié)果對象進(jìn)行操作芍锚,當(dāng)廣播傳給B 時,B 可以從結(jié)果對象中取得A 存入的數(shù)據(jù)

Android常用布局

FrameLayout蔓榄、RelativeLayout并炮、LinearLayout、AbsoluteLayout甥郑、TableLayout逃魄、GrideLayout(Android 4.0 推出)

Android 中布局的優(yōu)化措施都有哪些?

1澜搅、盡可能減少布局的嵌套層級:

可以使用sdk 提供的hierarchyviewer 工具分析視圖樹伍俘,幫助我們發(fā)現(xiàn)沒有用到的布局。

2勉躺、不用設(shè)置不必要的背景癌瘾,避免過度繪制:

比如父控件設(shè)置了背景色,子控件完全將父控件給覆蓋的情況下饵溅,那么父控件就沒有必要設(shè)置背景妨退。

3、使用標(biāo)簽復(fù)用相同的布局代碼:

4蜕企、使用標(biāo)簽減少視圖層次結(jié)構(gòu):

5咬荷、通過實(shí)現(xiàn)View 的延遲加載:

ListView 如何提高其效率?

1轻掩、復(fù)用ConvertView

2幸乒、自定義靜態(tài)類ViewHolder

3、分頁加載

4唇牧、使用WeakReference引用ImageView

更新ListView

使用adapter的notifyDataSetChanged()罕扎,使listView重新繪制

ListView 可以顯示多種類型的條目嗎基茵?

這個當(dāng)然可以的,ListView 顯示的每個條目都是通過baseAdapter 的getView(int position, View convertView,ViewGroup parent)來展示的壳影,理論上我們完全可以讓每個條目都是不同類型的view,除此之外adapter 還提供了getViewTypeCount()和getItemViewType(int position)兩個方法弥臼。在getView 方法中我們可以根據(jù)不同的viewtype 加載不同的布局文件宴咧。

ListView 如何定位到指定位置

list.setSelection(position);

如何在ScrollView 中如何嵌入ListView

通常情況下我們不會在ScrollView 中嵌套ListView,但是如果面試官非讓我嵌套的話也是可以的径缅。

在ScrollView 添加一個ListView 會導(dǎo)致listview 控件顯示不全掺栅,通常只會顯示一條,這是因?yàn)閮蓚€控件的滾動事件沖突導(dǎo)致纳猪。所以需要通過listview 中的item 數(shù)量去計算listview 的顯示高度氧卧,從而使其完整展示。

ListView 中如何優(yōu)化圖片

1氏堤、處理圖片的方式:

如果ListView 中自定義的Item 中有涉及到大量圖片的沙绝,一定要對圖片進(jìn)行細(xì)心的處理,因?yàn)閳D片占的內(nèi)存是ListView 項(xiàng)中最頭疼的鼠锈,處理圖片的方法大致有以下幾種:

①闪檬、不要直接拿路徑就去循環(huán)BitmapFactory.decodeFile;使用Options 保存圖片大小、不要加載圖片到內(nèi)存去购笆。

②粗悯、對圖片一定要經(jīng)過邊界壓縮尤其是比較大的圖片,如果你的圖片是后臺服務(wù)器處理好的那就不需要了

③同欠、在ListView 中取圖片時也不要直接拿個路徑去取圖片样傍,而是以WeakReference(使用WeakReference 代替強(qiáng)引用。比如可以使用WeakReference mContextRef)铺遂、SoftReference衫哥、WeakHashMap 等的來存儲圖片信息。

④娃循、在getView 中做圖片轉(zhuǎn)換時炕檩,產(chǎn)生的中間變量一定及時釋放

2、異步加載圖片基本思想:

1)捌斧、先從內(nèi)存緩存中獲取圖片顯示(內(nèi)存緩沖)

2)笛质、獲取不到的話從SD 卡里獲取(SD 卡緩沖)

3)捞蚂、都獲取不到的話從網(wǎng)絡(luò)下載圖片并保存到SD 卡同時加入內(nèi)存并顯示(視情況看是否要顯示)

原理:

優(yōu)化一:先從內(nèi)存中加載妇押,沒有則開啟線程從SD 卡或網(wǎng)絡(luò)中獲取,這里注意從SD 卡獲取圖片是放在子線程里執(zhí)

行的姓迅,否則快速滑屏的話會不夠流暢敲霍。

優(yōu)化二:于此同時俊马,在adapter 里有個busy 變量,表示listview 是否處于滑動狀態(tài)肩杈,如果是滑動狀態(tài)則僅從內(nèi)存中獲取圖片柴我,沒有的話無需再開啟線程去外存或網(wǎng)絡(luò)獲取圖片。

優(yōu)化三:ImageLoader 里的線程使用了線程池扩然,從而避免了過多線程頻繁創(chuàng)建和銷毀艘儒,如果每次總是new 一個線程去執(zhí)行這是非常不可取的,好一點(diǎn)的用的AsyncTask 類夫偶,其實(shí)內(nèi)部也是用到了線程池界睁。在從網(wǎng)絡(luò)獲取圖片時,先是將其保存到sd 卡兵拢,然后再加載到內(nèi)存翻斟,這么做的好處是在加載到內(nèi)存時可以做個壓縮處理,以減少圖片所占內(nèi)存说铃。

ListView 中圖片錯位的問題是如何產(chǎn)生的?here

scrollView 嵌套listview 方式除了測量還有什么方法访惜?

Android 中如何調(diào)用C 語言

當(dāng)我們的Java 需要調(diào)用C 語言的時候可以通過JNI 的方式,Java Native Interface腻扇。Android 提供了對JNI 的支持疾牲,因此我們在Android 中可以使用JNI 調(diào)用C 語言。在Android 開發(fā)目錄的libs 目錄下添加xxx.so 文件衙解,不過xxx.so文件需要放在對應(yīng)的CPU 架構(gòu)名目錄下阳柔,比如armeabi,x86 等蚓峦。

在Java 代碼需要通過System.loadLibrary(libName);加載so 文件舌剂。同時C 語言中的方法在java 中必須以native 關(guān)鍵字來聲明。普通Java 方法調(diào)用這個native 方法接口暑椰,虛擬機(jī)內(nèi)部自動調(diào)用so 文件中對應(yīng)的方法霍转。

播放網(wǎng)絡(luò)視頻

除了使用Android 提供的MediaPlayer 和VideoView 外通常還可以使用第三方開源萬能播放器,ijkplayer一汽,VitamioPlayer等

Serializable 和Parcelable 的區(qū)別?here?and?here

Intent 和Intentfilter?here

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末避消,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子召夹,更是在濱河造成了極大的恐慌岩喷,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件监憎,死亡現(xiàn)場離奇詭異纱意,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鲸阔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門偷霉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迄委,“玉大人,你說我怎么就攤上這事类少⌒鹕恚” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵硫狞,是天一觀的道長曲梗。 經(jīng)常有香客問我,道長妓忍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任愧旦,我火速辦了婚禮世剖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笤虫。我一直安慰自己旁瘫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布琼蚯。 她就那樣靜靜地躺著酬凳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪遭庶。 梳的紋絲不亂的頭發(fā)上宁仔,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機(jī)與錄音峦睡,去河邊找鬼翎苫。 笑死,一個胖子當(dāng)著我的面吹牛榨了,可吹牛的內(nèi)容都是我干的煎谍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼龙屉,長吁一口氣:“原來是場噩夢啊……” “哼呐粘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起转捕,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤作岖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后五芝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳍咱,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年与柑,在試婚紗的時候發(fā)現(xiàn)自己被綠了谤辜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓄坏。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖丑念,靈堂內(nèi)的尸體忽然破棺而出涡戳,到底是詐尸還是另有隱情,我是刑警寧澤脯倚,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布渔彰,位于F島的核電站,受9級特大地震影響推正,放射性物質(zhì)發(fā)生泄漏恍涂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一植榕、第九天 我趴在偏房一處隱蔽的房頂上張望再沧。 院中可真熱鬧,春花似錦尊残、人聲如沸炒瘸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顷扩。三九已至,卻和暖如春慰毅,著一層夾襖步出監(jiān)牢的瞬間隘截,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工汹胃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留技俐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓统台,卻偏偏與公主長得像雕擂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贱勃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

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