標籤:遞迴調用 根據 橫豎屏 標準 enc 透明度 get 否則 效率
1.Android四大組件以及作用???
Activity:Activity是Android程式與使用者實現互動的視窗,是Android中最重要的一中,它需要儲存各介面的狀態,做很多持久化的事情。 Service:運行與後台服務於Activity,定義好接受的Intent提供同步和非同步介面。 Content Provider: BroadCast Receiver:
2.Android中常用的五中布局???
FrameLayout: 架構布局 LinearLayout:線性布局 AbsolueLayout:絕對布局 RelativeLayout:相對布局 TableLayout:表格版面配置
3.Android 中動畫有哪幾類???它們的特點和區別是什嗎???
兩類,一類是Tween動畫、另一類是Frame動畫。 Tween動畫,實現方式可以使視圖組件移動、放大、縮小以及產生透明度的變化。 Frame動畫,通過一定的順序來播放一組圖片,(如gif圖)。
4.Android中Listview最佳化方案???
如果是自訂配接器,那麼在getView方法中考慮傳進來額參數contenView是否為null,如果不為null則直接使用,盡量減少view的建立。 給contentView設定tag(setTag()),傳入viewHolaer對象,用於緩衝要顯示的資料,可以達到映像資料的非同步載入。 如果Listview需要顯示的item比較多時,就要考慮資料的分頁載入,根據需求去對應載入資料。
5.ArrayList與LinkedList的區別和適用情境???
Arraylist: 優點:ArrayList是實現了基於動態數組的資料結構,因為地址連續,一旦資料存放區好了,查詢操作效率會比較高(在記憶體裡是連著放的)。 缺點:因為地址連續, ArrayList要移動資料,所以插入和刪除操作效率比較低。 LinkedList: 優點:LinkedList基於鏈表的資料結構,地址是任意的,所以在開闢記憶體空間的時候不需要等一個連續的地址,對於新增和刪除操作add和remove,LinedList比較佔優勢。LinkedList 適用於要頭尾操作或插入指定位置的情境。 缺點:因為LinkedList要移動指標,所以查詢操作效能比較低。 適用情境分析: 當需要對資料進行對此訪問的情況下選用ArrayList,當需要對資料進行多次增加刪除修改時採用LinkedList。
6.View的繪製流程???
View的繪製流程:OnMeasure()——>OnLayout()——>OnDraw() 各步驟的主要工作: OnMeasure(): 測量視圖大小。從頂層父View到子View遞迴調用measure方法,measure方法又回調OnMeasure。 OnLayout(): 確定View位置,進行頁面配置。從頂層父View向子View的遞迴調用view.layout方法的過程,即父View根據上一步measure子View所得到的布局大小和布局參數,將子View放在合適的位置上。 OnDraw(): 繪製視圖:ViewRoot建立一個Canvas對象,然後調用OnDraw()。六個步驟:①、繪製視圖的背景;②、儲存畫布的圖層(Layer);③、繪製View的內容;④、繪製View子視圖,如果沒有就不用;⑤、還原圖層(Layer);⑥、繪製捲軸。
7.activity的生命週期???
Activity生命週期方法主要有onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()和onRestart()方法。 啟動一個A Activity,分別執行onCreate()、onStart()、onResume()方法。 從A Activity開啟B Activity分別執行A onPause()、B onCreate()、B onStart()、B onResume()、A onStop()方法。 關閉B Activity,分別執行B onPause()、A onRestart()、A onStart()、A onResume()、B onStop()、B onDestroy()方法。 橫豎屏切換A Activity,資訊清單檔中不設定android:configChanges屬性時,先銷毀onPause()、onStop()、onDestroy()再重新建立onCreate()、onStart()、onResume()方法,設定orientation|screenSize(一定要同時出現)屬性值時,不走生命週期方法,只會執行onConfigurationChanged()方法。 Activity之間的切換可以看出onPause()、onStop()這兩個方法比較特殊,切換的時候onPause()方法不要加入太多耗時操作否則會影響體驗。
8.android的資料存放區???
使用SharedPreferences儲存資料;它是Android提供的用來儲存一些簡單配置資訊的一種機制,採用了XML格式將資料存放區到裝置中。只能在同一個包內使用,不能在不同的包之間使用。 檔案儲存體資料;檔案儲存體方式是一種較常用的方法,在Android中讀取/寫入檔案的方法,與Java中實現I/O的程式是完全一樣的,提供了openFileInput()和openFileOutput()方法來讀取裝置上的檔案。 SQLite資料庫儲存資料;SQLite是Android所帶的一個標準的資料庫,它支援SQL語句,它是一個輕量級的嵌入式資料庫。 使用ContentProvider儲存資料;主要用於應用程式之間進行資料交換,從而能夠讓其他的應用儲存或讀取此Content Provider的各種資料類型。 網路儲存資料;通過網路上提供給我們的儲存空間來上傳(儲存)和下載(擷取)我們儲存在網路空間中的資料資訊。
9.Activity啟動模式???
standard:標準模式,也是系統預設的啟動模式。假如 activity A 啟動了 activity B , activity B 則會運行在 activity A 所在的任務棧中。而且每次啟動一個 Activity ,都會重新建立新的執行個體,不管這個執行個體在任務中是否已經存在。 singleTop:棧頂複用模式。假如 activity A 啟動了 activity B ,就會判斷 A 所在的任務棧棧頂是否是 B 的執行個體。如果是,則不建立新的 activity B 執行個體而是直接引用這個棧頂執行個體,同時 onNewIntent 方法會被回調,通過該方法的參數可以取得當前請求的資訊;如果不是,則建立新的 activity B 執行個體。 singleTask:棧內複用模式。在第一次啟動這個 Activity 時,系統便會建立一個新的任務,並且初始化 Activity 的執行個體,放在新任務的底部。不過需要滿足一定條件的。那就是需要設定 taskAffinity 屬性。 singleInstance:單一實例模式。這個是 singleTask 模式的加強版,它除了具有 singleTask 模式的所有特性外,它還有一點獨特的特性,那就是此模式的 Activity 只能單獨地位於一個任務棧,不與其他 Activity 共存於同一個任務棧。
10.廣播註冊???
首先寫一個類要繼承BroadCastReceiver 第一種:在資訊清單檔中聲明,添加 第二種:使用代碼進行註冊如: <receive android :name ="BroadCastReceiverDemo"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"> </intent-filter> </receiver> 第二種:使用代碼進行註冊如: IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); BroadCastReceiverDemo receiver = new BroadCastReceiver(); registerReceiver(receiver, filter); 兩種註冊類型的區別是: 第一種是常駐型廣播,也就是說當應用程式關閉後,如果有資訊廣播來,程式也會被系統調用自動運行。 第二種不是常駐廣播,也就是說廣播跟隨程式的生命週期。
Android 面試題總結