六、android 中的動畫有哪幾種,它們的特點和區別是什麼 ?
逐幀動畫和補間動畫。
逐幀動畫:是傳統的動畫播放方式,指定每一幀的內容和停留時間,然後順序地播放排列好的圖片,類似電影。
補間動畫:給出兩個關鍵幀(初和末)和變化時間、方式,通過一些算法對View的內容在規定的時間內完成一系列的圖形變換。主要包括四種效果:Alpha、Scale、Translate和Rotate。
所以,補間動畫常用來播放一些有規律的動畫,而逐幀動畫則不一定。
七、請介紹下 Android 中常用的五種布局
1.FrameLayout(幀布局)
特點:組件都是從左上角開始放置,後面的會覆蓋前面的組件,就像往牆角堆砌東西一樣。布局比較簡單,只能放一點比較簡單的東西。
2.LinearLayout(線性布局)
特點:最常用的布局。分為垂直布局和水平布局。當垂直布局時,每一行就只有一個元素,多個元素依次垂直往下排列;水平布局時,只有一行,每一個元素依次向右排列。
3.AbsoluteLayout(絕對布局)
特點:就是用X,Y坐標來指定組件的位置,這種布局適應性太差,很少使用。
4.RelativeLayout(相對布局)
特點:一種非常常用的布局。相對布局是一種以某一個元素為參照物,來確定其他組件位置的布局方式。包括以某一組件為參照物和以父容器為參照物兩種情況。
5.TableLayout(表格布局)
特點:類似Html裡面的Table。用TableRow來代表表格布局中的每一行,在裡面去定義每一行的元素內容和對齊方式。
這幾種布局都有自己的特點,在實際應用中,常常相互嵌套,結合使用,才能做出漂亮的界面。
八、如何啟用Service ,如何停用Service
啟動方式有兩種:startService(),bindService().它們都是Context的方法。
區別:使用startService()方法啟用服務,調用者與服務之間沒有關連, 即使調用者退出了,服務仍然運行。使用bindService()方法啟用服務,調用者與服務綁定在了一起,調用者一旦退出,服務也就終止.
停用:采用startService()方法啟動的服務,只能調用Context.stopService()方法結束服務。
采用bindService()方法啟動的服務,調用者和服務綁定在了一起。若調用者退出,系統會調用onUnbind()方法解除綁定,然後調用onDestroy()方法。當然,開發者也可以自己調用Context.unbindService()方法手動解除綁定。接著,系統也會調用服務的onUnbind()-->onDestroy()方法。
九、注冊廣播有幾種方式,這些方式有何優缺點?
注冊方式有兩種:一是在代碼中動態注冊:registerReceiver(receiver,filter);
二是在AndroidManifest中配置。
區別:
1)第一種不是常駐型廣播,也就是說廣播跟隨程序的生命周期。
2)第二種是常駐型,也就是說當應用程序關閉後,如果有信息廣播來,程序也會被系統調用自動運行。
注:當需要通過廣播更新UI時,一般采用動態注冊的方式,啟動Activity時候注冊BroadcastReceiver,Activity不可見時候,取消注冊。
在AndroidManifest配置還有一個缺點:由於它一直處於活動狀態,cpu和電源資源耗費比較大。
十、什麼是ANR 如何避免它?
ANR:Application Not Responding。
產生原因:在Android中,活動管理器和窗口管理器這兩個系統服務負責監視應用程序的響應,當用戶的操作在5s內應用程序沒能做出反應,BroadcastReceiver在10秒內沒有執行完畢,就會出現應用程序無響應對話框,這就是ANR。
解決方式:Activity應該在它的關鍵生命周期方法裡盡可能少的去做創建操作、潛在的耗時操作(網絡或數據庫操作等),或者高耗時的計算操作(改變位圖尺寸等),而應該在子線程裡(或者異步方式)來完成。主線程應該為子線程提供一個Handler,以便子線程完成時能夠提交給主線程。