面試知識點

1.AIDL

1.aidl對應(yīng)的接口名稱與aidl文件名相同(aidl對應(yīng)的接口名稱必須與aidl文件名相同不然無法自動編譯)
2.aidl的文件的內(nèi)容類似java代碼
3.創(chuàng)建一個Service(服務(wù))崎溃,在服務(wù)的onBind(Intent intent)方法中返回實現(xiàn)了aidl接口的對象
4.aidl對應(yīng)的接口的方法前面不能加訪問權(quán)限修飾符(public ,private,protected等虚倒,也不能用static final!)
5.AIDL默認(rèn)支持的類型包括Java基本類型,String轩勘,List,Map裁着,CharSequence尊流,自定義類型需要實現(xiàn)Parcelable接口

2.前臺進(jìn)程

Paste_Image.png

3.Toast

使用Toast提示時,關(guān)于提示時長,顯示時長默認(rèn)只有2種設(shè)置,toast只能設(shè)置為 2s和3.5s.傳進(jìn)去自定義數(shù)字并不會報錯,只是實際不起作用膘魄,想要更豐富的提示推薦用Dialog

4.AlertDialog

1.AlertDialog.Builder的create() 和show()方法都返回AlertDialog對象
2.AlertDialog不能直接用new關(guān)鍵字構(gòu)建對象,而必須使用其內(nèi)部類Builder(****因為其構(gòu)造器都是保護(hù)的,所以不允許非子類調(diào)用****)

5.SQLiteOpenHelper對數(shù)據(jù)庫進(jìn)行管理的方法

getReadableDatabase()和 getWriteableDatabase()都可以得到一個可既可以讀又可以寫的數(shù)據(jù)庫對象竭讳,不同的是创葡,當(dāng)磁盤空間滿了之后, getReadableDatabase()得到的是一個只讀的對象绢慢,而 getWriteableDatabase()則會拋出異常灿渴。

6.Android系統(tǒng)對下列哪些對象提供了資源池

A.Message提供了消息池,有靜態(tài)方法Obtain從消息池中取對象胰舆;
B.Thread默認(rèn)不提供資源池骚露,除非使用線程池ThreadPool管理;
C.AsynTask是線程池改造的缚窿,池里 默認(rèn)提供(核數(shù)+1)個線程進(jìn)行并發(fā)操作棘幸,最大支持(核數(shù) * 2 + 1)個線程,超過后會丟棄其他任務(wù)倦零;
D.Looper误续,每個Looper創(chuàng)建時創(chuàng)建一個消息隊列和線程對象吨悍,也不是資源池;
因此答案為AC

7.IntentService

繼承Service的蹋嵌,那么它包含了Service的全部特性育瓜,當(dāng)然也包含service的生命周期,那么與service不同的是栽烂,IntentService在執(zhí)行onCreate操作的時候躏仇,內(nèi)部開了一個線程,去你執(zhí)行你的耗時操作愕鼓。

8.style和theme

style和theme本質(zhì)上就是同一個東西钙态,xml格式完全相同,只是我用在activity上我就叫他theme菇晃,我用在view上我就叫他style。唯一的區(qū)別就是style里頭控制的各個屬性了蚓挤,某些屬性是只有針對Activity才能生效的(你view有標(biāo)題欄嘛有狀態(tài)欄有導(dǎo)航欄嗎嘛磺送?但是反過來Activity內(nèi)部卻有一個繼承自View的Decorview) 。所以style可以作用在activity上灿意,但是theme卻不能反過來作用在view上

9.線程間通信

andriod提供了 Handler 和 Looper 來滿足線程間的通信估灿。 Handler 先進(jìn)先出原則。 Looper 類用來管理特定線程內(nèi)對象之間的消息交換(MessageExchange) 缤剧。 1)Looper: 一個線程可以產(chǎn)生一個 Looper 對象馅袁,由它來管理此線程里的 MessageQueue( 消息隊列 ) 。 2)Handler: 你可以構(gòu)造 Handler 對象來與 Looper 溝通荒辕,以便 push 新消息到 MessageQueue 里 ; 或者接收 Looper 從 Message Queue取出 ) 所送來的消息汗销。 3) Message Queue( 消息隊列 ): 用來存放線程放入的消息。 4) 線程: UIthread 通常就是 main thread 抵窒,而 Android 啟動程序時會替它建立一個 MessageQueue 弛针。

Paste_Image.png

Message:消息分為硬件產(chǎn)生的消息(如按鈕、觸摸)和軟件生成的消息李皇;
MessageQueue:消息隊列的主要功能向消息池投遞消息(MessageQueue.enqueueMessage)和取走消息池的消息(MessageQueue.next)削茁;
Handler:消息輔助類,主要功能向消息池發(fā)送各種消息事件(Handler.sendMessage)和處理相應(yīng)消息事件(Handler.handleMessage)掉房;
Looper:不斷循環(huán)執(zhí)行(Looper.loop)茧跋,按分發(fā)機(jī)制將消息分發(fā)給目標(biāo)處理者。
《Android中Handler引起的內(nèi)存泄露》

10.Activity間通過Intent傳遞數(shù)據(jù)大小限制

底層parcel對象在不同activity直接傳遞過程中保存在一個叫做“ Binder transaction buffe”的地方卓囚,既然是緩沖區(qū)瘾杭,肯定有大小限制1M。(官方解釋捍岳,對于具體某一次Activity間傳輸?shù)南拗拼笮∈遣淮_定的富寿,依據(jù)使用環(huán)境而定)
該博客“Yet another post on Serializable vs Parcelable”中 Serializable和Parcel時提到以下兩點數(shù)據(jù)睬隶,僅供參考了解,實際使用各有不同

  1. 使用 Serializable 和parcel傳輸相同對象页徐,都轉(zhuǎn)換為byte[]后苏潜,parcel大概是serializable的20倍了。
  2. 但是官方建議使用Parcel变勇,原因是說速度是serializable的將近10倍恤左。

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

1、不設(shè)置Activity的android:configChanges時搀绣,切屏?xí)匦抡{(diào)用各個生命周期飞袋,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次
2链患、設(shè)置Activity的android:configChanges="orientation"時巧鸭,切屏還是會重新調(diào)用各個生命周期,切橫麻捻、豎屏?xí)r只會執(zhí)行一次
3纲仍、設(shè)置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調(diào)用各個生命周期贸毕,只會執(zhí)行onConfigurationChanged方法

12.dvm的進(jìn)程和Linux的進(jìn)程, 應(yīng)用程序的進(jìn)程是否為同一個概念

Dvm的進(jìn)程是dalivk虛擬機(jī)進(jìn)程,每個android程序都運行在自己的進(jìn)程里面,每個android程序系統(tǒng)都會給他分配一個單獨的liunx uid(user id),每個dvm都是linux里面的一個進(jìn)程.所以說這兩個進(jìn)程是一個進(jìn)程.

12. 如何在一個Service中啟動一個Activity

Intent intent = new Intent(Service.this,TestActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

13.程序之間的親和性的理解

1郑叠、默認(rèn)情況下一個應(yīng)用的所有Activity都是具有相同的affinity,都是從application中繼承明棍,application的affinity默認(rèn)就是manifest的包名乡革。
2、affinity對Activity來說摊腋,就像是身份證一樣沸版,可以告訴所在的Task,自己屬于其中的一員歌豺。
3推穷、應(yīng)用場合:
a:根據(jù)affinity重新為Activity選擇合適的宿主Task;
b:與allowTaskReparenting屬性配合;
c:啟動Activity使用Intent設(shè)置了FLAG_ACTIVITY_NEW_TASK標(biāo)記。

14.注冊廣播有幾種方式类咧,這些方式有什么特點和區(qū)別?

兩種方式馒铃,首先這兩種方式都要先寫繼承自broadcastreceive的類
答: 第一種:在清單文件中聲明,添加
<receive android:name=".IncomingSMSReceiver " >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED")
<intent-filter>
<receiver>
第二種使用代碼進(jìn)行注冊如:
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver receiver = new IncomgSMSReceiver();
registerReceiver(receiver,filter);
兩種注冊類型的區(qū)別是:
1)第二種不是常駐型廣播,也就是說廣播跟隨程序的生命周期痕惋。
2)第一種是常駐型区宇,也就是說當(dāng)應(yīng)用程序關(guān)閉后,如果有信息廣播來值戳,程序也會被系統(tǒng)調(diào)用自動運行议谷。

15.Activity A 啟動 Activity B 時一系列操作的發(fā)生順序

Activity A 的 onPause方法執(zhí)行。
Activity B 的 onCreate堕虹、onStart和 onResume方法依次執(zhí)行卧晓。
然后芬首,如果 Activity A 在屏幕上不再可見,則其 onStop方法執(zhí)行逼裆。

您可以利用這種可預(yù)測的生命周期回調(diào)順序管理從一個 Activity 到另一個 Activity 的信息轉(zhuǎn)變郁稍。 例如,如果您必須在第一個 Activity 停止時向數(shù)據(jù)庫寫入數(shù)據(jù)胜宇,以便下一個 Activity 能夠讀取該數(shù)據(jù)耀怜,則應(yīng)在 onPause而不是 onStop執(zhí)行期間向數(shù)據(jù)庫寫入數(shù)據(jù).
onPause較容易被觸發(fā),所以我們在做BroadcastReceiver注銷時放在onStop要好些桐愉。onPause時Activity界面仍然是可見的财破,如彈出一個Dialog時。但在保存數(shù)據(jù)時从诲,放在onPause去做可以保證數(shù)據(jù)存儲的有效性左痢,如果放在onStop去做,在某些情況下Activity走完onPause后有可能還沒順利走到onStop就被系統(tǒng)回收了系洛。

16.如何實現(xiàn)應(yīng)用內(nèi)多語言切換抖锥?

直接調(diào)用Android開放的接口Resources.updateConfiguration:

 public static void changeSystemLanguage(Context context, String language) {
        if (context == null || TextUtils.isEmpty(language)) {
            return;
        }

        Resources resources = context.getResources();
        Configuration config = resources.getConfiguration();
        if (Locale.SIMPLIFIED_CHINESE.getLanguage().equals(language)) {
            config.locale = Locale.SIMPLIFIED_CHINESE;
        } else {
            config.locale = new Locale(language);
        }
        resources.updateConfiguration(config, null);
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市碎罚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纳像,老刑警劉巖荆烈,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異竟趾,居然都是意外死亡憔购,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門岔帽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玫鸟,“玉大人,你說我怎么就攤上這事。” “怎么了匆骗?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵详拙,是天一觀的道長。 經(jīng)常有香客問我您单,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任押桃,我火速辦了婚禮,結(jié)果婚禮上导犹,老公的妹妹穿的比我還像新娘唱凯。我一直安慰自己羡忘,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布磕昼。 她就那樣靜靜地躺著卷雕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掰烟。 梳的紋絲不亂的頭發(fā)上爽蝴,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音纫骑,去河邊找鬼蝎亚。 笑死,一個胖子當(dāng)著我的面吹牛先馆,可吹牛的內(nèi)容都是我干的发框。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼煤墙,長吁一口氣:“原來是場噩夢啊……” “哼梅惯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仿野,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤铣减,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后脚作,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葫哗,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年球涛,在試婚紗的時候發(fā)現(xiàn)自己被綠了劣针。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡亿扁,死狀恐怖捺典,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情从祝,我是刑警寧澤襟己,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站哄褒,受9級特大地震影響稀蟋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呐赡,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一退客、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦萌狂、人聲如沸档玻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽误趴。三九已至,卻和暖如春务傲,著一層夾襖步出監(jiān)牢的瞬間凉当,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工售葡, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留看杭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓挟伙,卻偏偏與公主長得像楼雹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尖阔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

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