1.Android四大組件以及做用???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啓動模式???ide
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); 兩種註冊類型的區別是: 第一種是常駐型廣播,也就是說當應用程序關閉後,若是有信息廣播來,程序也會被系統調用自動運行。 第二種不是常駐廣播,也就是說廣播跟隨程序的生命週期。