此文章不定時(shí)更新涂乌,記錄面試過程中遇到的相關(guān)問題
1.activity的啟動(dòng)模式有幾種?分別是什么傅寡?
4種
standard:默認(rèn)模式放妈,可以不用寫配置。在這個(gè)模式下荐操,都會(huì)默認(rèn)創(chuàng)建一個(gè)新的實(shí)例芜抒。因此,在這種模式下托启,可以有多個(gè)相同的實(shí)例宅倒,也允許多個(gè)相同Activity疊加。
singleTop:如果Activity在棧頂?shù)臅r(shí)候屯耸,啟動(dòng)相同的Activity拐迁,不會(huì)創(chuàng)建新的實(shí)例,而會(huì)調(diào)用其onNewIntent方法疗绣。
singleTask:只有一個(gè)實(shí)例线召。在同一個(gè)應(yīng)用程序中啟動(dòng)他的時(shí)候,若Activity不存在多矮,則會(huì)在當(dāng)前task創(chuàng)建一個(gè)新的實(shí)例缓淹,若存在,則會(huì)把task中在其之上的其它Activity destory掉并調(diào)用它的onNewIntent方法塔逃。如果是在別的應(yīng)用程序中啟動(dòng)它讯壶,則會(huì)新建一個(gè)task,并在該task中啟動(dòng)這個(gè)Activity湾盗,singleTask允許別的Activity與其在一個(gè)task中共存伏蚊,也就是說,如果我在這個(gè)singleTask的實(shí)例中再打開新的Activity格粪,這個(gè)新的Activity還是會(huì)在singleTask的實(shí)例的task中丙挽。
singleInstance:只有一個(gè)實(shí)例肺孵,并且這個(gè)實(shí)例獨(dú)立運(yùn)行在一個(gè)task中,這個(gè)task只有這個(gè)實(shí)例颜阐,不允許有別的Activity存在。
2.請(qǐng)用代碼寫出一個(gè)接口回調(diào)的例子
public class A implements View.OnClickListener{
private OnRecyclerViewItemClickListener mOnItemClickListener = null;
public interface OnRecyclerViewItemClickListener {
void onItemClick(View view, int data);
}
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
//注意這里使用getTag方法獲取數(shù)據(jù)
mOnItemClickListener.onItemClick(v, (Integer) v.getTag());
}
}
public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mOnItemClickListener = listener;
}
}
然后在B類中實(shí)現(xiàn)具體操作
public class B{
A a = new A();
a.setOnItemClickListener(){
//各種噼里啪啦的操作
}
}
3.ScrollView嵌套R(shí)ecyclerView會(huì)有什么問題吓肋?怎么解決凳怨?
ScrollView中嵌套了幾個(gè)RecyclerView,會(huì)導(dǎo)致滑動(dòng)RecyclerView沒有慣性效果
解決辦法:重寫LayoutManager,設(shè)置canScrollVertically屬性為false
eg:
layoutManager = new GridLayoutManager(this, 2, LinearLayoutManager.VERTICAL, false){
@Override
public boolean canScrollVertically() {
return false;
}
};
4.Android5.0是鬼,6.0肤舞,7.0的特性
Android 5.0:
Material Design;
Dalvik改為ART均蜜,提高啟動(dòng)效率
Android 6.0:
TextInputLayout新控件李剖;
運(yùn)行權(quán)限管理;
增加大量動(dòng)畫囤耳;
支持raw格式照片
用httpURLConnection來替代httpclient
Android 7.0:
分屏多任務(wù)
通知欄快速回復(fù)
5.內(nèi)存泄漏跟內(nèi)存溢出的區(qū)別
內(nèi)存溢出 out of memory篙顺,是指程序在申請(qǐng)內(nèi)存時(shí),沒有足夠的內(nèi)存空間供其使用充择,出現(xiàn)out of memory德玫;比如申請(qǐng)了一個(gè)integer,但給它存了long才能存下的數(shù),那就是內(nèi)存溢出椎麦。
內(nèi)存泄露 memory leak宰僧,是指程序在申請(qǐng)內(nèi)存后,無法釋放已申請(qǐng)的內(nèi)存空間观挎,一次內(nèi)存泄露危害可以忽略琴儿,但內(nèi)存泄露堆積后果很嚴(yán)重,無論多少內(nèi)存,遲早會(huì)被占光嘁捷。
memory leak會(huì)最終會(huì)導(dǎo)致out of memory造成!