1. 程式人生 > >android 面試題(一)

android 面試題(一)

程序 一個 如果 intent傳值 存儲 新的 有一個 數據類型 andro

1、Android中真實寬高,getWidth和getMeasuredWidth的區別:哪個計算的是真實的寬?

getWidth():得到的是View在父Layout中布局好後的寬度值,如果沒有父布局,那麽默認的父布局就是整個屏幕。

getMeasuredWidth():得到的是最近一次調用measure()方法測量後得到的是View的寬度,它僅僅用在測量和Layout的計算中。所以此方法得到的是View的內容占據的實際寬度。

總結:

getWidth(): View在設定好布局後整個View的寬度。
getMeasuredWidth(): 對View上的內容進行測量後得到的View內容占據的寬度,前提是你必須在父布局的onLayout()方法或者此View的onDraw()方法裏調用measure(0,0);否則你得到的結果和getWidth()得到的結果是一樣的。

2、堆區、棧區、方法區有什麽區別?靜態變量存儲在哪個區?

堆區:

1.存儲的全部是對象,每個對象都包含一個與之對應的class的信息。(class的目的是得到操作指令)

2.jvm只有一個堆區(heap)被所有線程共享,堆中不存放基本類型和對象引用,只存放對象本身。

棧區:

1.每個線程包含一個棧區,棧中只保存基本數據類型的對象和自定義對象的引用(不是對象),對象都放在堆區中。

2.每個棧中的數據(原始類型和對象引用)都是私有的,其他棧不能訪問。

3.棧分為3個部分:基本類型變量區、執行環境上下文、操作指令區(存放操作指令)

方法區:

1.又叫靜態區,跟堆一樣,被所有的線程共享。方法區包含所有的class和static變量。

2.方法區中包含的都是在整個程序中永遠唯一的元素,如class,static變量。

靜態變量屬於類的屬性,存儲在方法區。方法區保存一個類的模板,堆存放類的實例。棧用來函數計算

Intent傳值的類型有哪些?

1) 8種基本數據類型及其數組
2)String(String實現了Serializable)/CharSequence實例類型的數據及其數組
3) 實現了Parcelable的對象及其數組( 操作較復雜, 但速度快)。android提供了一種新的類型:Parcel。本類被用作封裝數據的容器,封裝後的數據可以通過Intent或IPC傳遞。 除了基本類型以外,只有實現了Parcelable接口的類才能被放入Parcel中。

4)實現了Serializable的對象及其數組(操作簡單, 但速度慢)。Serializable:將 Java 對象序列化為二進制文件的 Java 序列化技術,是Java系列技術中一個較為重要的技術點,在大部分情況下,開發人員只需要了解被序列化的類需要實現 Serializable接口,使用ObjectInputStream 和 ObjectOutputStream 進行對象的讀寫。

5)File在Java裏也是類,在Android裏也實現了Serializable接口

android 面試題(一)