Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android常見面試模塊

android常見面試模塊

編輯:關於Android編程

一、ANR異常(Application Not Responding)應用程序無響應

ANR定義:一個流暢的合理的應用程序中不能出現anr,而讓用戶每次都要處理這個對話框。在程序裡對響應性能的設計很重要,這樣系統不會顯示ANR給用戶。

默認情況下,在android中Activity的最長執行時間是5秒,BroadcastReceiver的最長執行時間則是10秒。

第一:什麼會引發ANR?(主要原因歸結為一句話:在主線程裡面做了耗時操作)

在Android裡,應用程序的響應性是由Activity Manager和WindowManager系統服務監視的 。當它監測到以下情況中的一個時,Android就會針對特定的應用程序顯示ANR:

1.在5秒內沒有響應輸入的事件(例如,按鍵按下,屏幕觸摸)

2.BroadcastReceiver在10秒內沒有執行完畢

造成以上兩點的原因有很多,比如在主線程中做了非常耗時的操作,比如說是下載,io異常等。

潛在的耗時操作,例如網絡或數據庫操作,或者高耗時的計算如改變位圖尺寸,應該在子線程裡(或者以數據庫操作為例,通過異步請求的方式)來完成。

第二:如何避免ANR?

1、運行在主線程裡的任何方法都盡可能少做事情。特別是Activity應該在它的關鍵生命周期方法(如onCreate()和onResume())裡盡可能少的去做創建操作。(可以采用重新開啟子線程的方式,然後使用Handler+Message的方式做一些操作(使用消息機制),比如更新主線程中的ui等)

2、應用程序應該避免在BroadcastReceiver裡做耗時的操作或計算。

總結:anr異常也是在程序中自己經常遇到的問題,主要的解決辦法自己最常用的就是不要在主線程中做耗時的操作,而應放在子線程中來實現,比如采用Handler+mesage的方式,或者是有時候需要做一些和網絡相互交互的耗時操作就采用asyntask異步任務的方式(它的底層其實Handler+mesage有所區別的是它是線程池)等,在主線程中更新UI。

二、具備良好的編碼風格, 重視代碼結構.

抽取是屬於編碼風格這一塊的內容的

要具備良好的編碼風格,抽取必不可少。

抽取是為了保證代碼的結構清晰,便於後期維護。

代碼首先是給人看的,然後才是給機器看的。

良好的編碼風格包括:

1)代碼與代碼之間的空行(如果代碼塊之間的關聯不是很大)。

2)方法一定要寫注釋,特別是方法的功能和參數。

3)方法抽取到一個單獨的工具類中,把常量抽取到一個單獨的類中

4)多個頁面之間對相同的部分進行抽取,一般抽取成一個抽象類。

5 )Android界面中字符串常量、色彩、尺寸的抽取。

6 )務器端開發中 數據操作接口的抽取(三層架構) (對接口的抽取是一種解耦的方式)

7)業務邏輯的過程中,可能要抽取接口,實現接口回調 。

8)類、方法、變量的命名要規范 做到見名知意。

9)代碼的縮進,格式化;代碼格式化一定要提交一個版本。

三、服務器端的開發特點:

Servlet------->dao(對數據庫進行增刪改查)------->dao.imlp------->數據庫的創建和組織

服務器端三層架構:

1:數據訪問層:是對數據的操作,而不是數據庫,具體為業務邏輯層或表示層提供數據.

2:業務邏輯層:主要是針對具體的問題的操作,也可以理解成對數據層的操作,對數據業務邏輯處理。

3:表示層(api):主要表現為WEB方式,如果邏輯層相當強大和完善,無論表現層如何定義和更改,邏輯層都能完善地提供服務。表示層:主要對用戶的請求接受,以及數據的返回,為客戶端提供應用程序的訪問。

四、移動互聯網產品的特點:

1、用戶體驗:

1)視覺設計:Android UI設計規范,界面設計友好。

2)手機卡頓:a手機本身響應性能差、b從服務期端獲取數據慢。

3)發熱:CPU計算過多導致的,比如短時間內加載大量圖片。(文件讀寫操作)

4)耗電量:硬件(單核到多核、手機屏幕變大)、app功能。

5)重量大小:體現在在電池大小和外殼材質。

2、安全性:存儲空間足夠大,能夠存儲大量的個人信息,如何確保信息的安全性,這是我們急需解決的問題----好萊塢明星艷照洩露事件。

手機中存儲了大量的個人信息數據,如何進行保護?

五、產品設計理念:

產品設計要以用戶為中心,設計要滿足用戶的需求。准確定位用戶,用戶用你的產品能做什麼?

就如同玩游戲,一定要給用戶帶來快樂,讓用戶高興。

用戶關注的是(用戶體驗):耗電、發熱量、(用戶體驗最直觀的是視覺設計)、響應速度(卡頓)。

降低耗電和發熱量,手機用戶很在意這兩點。

總而言之,在移動設備的開發上,三大類問題

1)性能的問題,

2)界面響應的問題

3)產品的穩定性問題,是移動開發人員需要最為注意和保障的。

對於耗電量的理解:

1)手機硬件的變化是導致耗電量增加的一個主要原因,隨著智能手機的發展,手機內部已經發生了翻天覆地的變化,從單核手機到雙核手機,一直發展到八核手機,手機運算速度的提升也意味著需要更強的電力。

2)手機屏幕也紛紛向著大屏發展,從3.5寸到現在的7寸,巨大的手機屏幕也是造成手機耗電量增加的一個主要原因。

3)功能增加造成耗電增加。現在的手機發展已經將人們帶入了一個全新的移動互聯網世界,WIFI、藍牙、高達百兆的4G網絡、海量的應用軟件,這些功能的使用無不需要電力的支持,尤其是在手機上觀看互聯網視頻、玩游戲等行為,異常耗費手機電量。

許多功能的使用需要電力的支持,在手機上觀看互聯網視頻、玩游戲等行為異常耗電。

4)手機用戶沒有養成良好的使用習慣也是耗電量大的重要原因。手機智能化意味著可以同時啟動多個任務,不少用戶在使用過程中,沒有及時關閉後台程序,導致多個後台程序同時運行,手機後台在持續高強度運作的過程中,耗電量自然就會加大。

同時啟動多個任務,沒有及時關閉後台程序,多個後台程序同時運行。

網絡保持在線也需要耗費一定的電量。

深色壁紙要比淺顏色的壁紙更省電。

在聲音優化方面,一般情況下應該盡量把電鈴調低。

在工具使用方面,可以通過一些工具軟件幫助我們優化手機節能。

任何App包括後台Service應該盡可能減少喚醒CPU的次數,Android的預加載機制。

那麼如何優化耗電量呢?

1)第一,不要設計復雜算法。

在開發一個模塊前先想想會不會費電,如果會,就不要去做。代碼是為了服務用戶,而不是折騰用戶。在手機上實現精巧的算法

2)第二,不要在後台濫用Service。Android非常開放,開發者可在後台觸發任何處理邏輯,肆意占用CPU和內存。

3)第三,網絡請求不要太頻繁。系統組件中最耗電的是屏幕,其次就是網絡。

☆通過代碼優化耗電量:(至少能給面試官講出來)

BatteryManager;EXTRA_LEVEL電池當前的電量狀態。

1)如果電池在充電,發揮app的刷新率

2)如果電池電量低,禁止後台服務更新

<-------------------------------------------------------------->

手機重量:對於女士來說,手機還是輕一點比較好。

<--------------------------------------------------------------->

1)手機發熱的根本原因是:Cpu運算過多導致、手機使用時間太長、運行的軟件太多。

2)手機發熱最明顯的危害就是:

加速手機裡面配件的老化;手機如果發熱的很厲害也有可能有爆炸危險;有些手機發熱,會有可能自動重啟或者卡機。

3)A:一般非正常情況下(包括打游戲,打電話)高頻運轉的時候就會出現手機明顯的發熱現象,有些游戲需要超頻的cpu支持。當然處理器運行得越快,手機產生的熱量就越多;

B:手機的內部空間比較狹小,而且普遍手機散熱比較的差。

手機功耗越大,就需要電池放電快,電池快速放電也會發熱,從而導致手機CPU和電池的溫度較高。

性能越好,功耗就越大。性能指:cpu的運算速度。

4)如何散熱呢?減少cpu的運算次數,降低耗電量耗電就是散熱最根本的原因.

最好下載一個手機溫度檢測工具。

<--------------------------------------------------------------->

從服務期端獲取數據慢:這種現象產生的原因有哪幾點,如何解決呢?

1)可能是因為服務器端有連接人數限制的導致,使用負載均衡技術進行解決。

2)對服務器端數據進行查詢的時候,sql語句比較臃腫;要通過優化sql語句,來提高數據庫的性能。

<--------------------------------------------------------------->

六、Android安全性:

1)應用程序簽名達到保護軟件的目的。

2)權限拒絕。

3代碼混淆。

權限是 Android 平台的一種安全機制,以允許或限制應用程序訪問受限的 API和資源。

默認情況下,Android 應用程序沒有被授予任何權限,不允許它們訪問設備上受保護的 API或資源,從而保證了它們的安全。權限必須被請求,定義了定制的權限,文件和內容提供者就可以受到保護。確保在運行時檢查、執行、授予和撤銷權限。

創建Android 應用程序時可以考慮采用調試模式和發布模式。

七、視覺設計:主要體現在app的界面上

App設計應該以用戶為中心,滿足用戶的需求。產品好不好,是用戶說了算。

視覺設計:1)應該把握細節。

2)界面上的元素應該分清主次,讓視覺層級清晰,提高界面的易讀性。

3)重視留白:留白能讓頁面充滿更多的呼吸空間。讓段落和句子更加清爽利落,讓重要的視覺元素更加突出。

4)設計界面時,盡量多畫草圖。

5)視覺設計最根本的目的是:去掉界面上一些花哨、不能解決實際問題的功能和元素,從而讓頁面更具功能性。界面上每一個存在的元素都應該有其意義。

八、內存洩露:該釋放的資源沒有釋放

1、萬惡的static

static是個好東西,聲明賦值調用就是那麼的簡單方便,但是伴隨而來的還有性能問題。由於static聲明變量的生命周期其實是和APP的生命周期一樣的,有點類似與Application。如果大量的使用的話,就會占據內存空間不釋放,積少成多也會造成內存的不斷開銷,直至掛掉。

2、Cursor及時關閉

在查詢SQLite數據庫時,會返回一個Cursor,當查詢完畢後,及時關閉,這樣就可以把查詢的結果集及時給回收掉。

3、BroadCastReceiver、Service

綁定廣播和服務,一定要記得在不需要的時候給解綁。

4、I/O流

I/O流操作完畢,讀寫結束,記得關閉

5、構造Adapter時,沒有使用緩存的convertView 3

6、Bitmap對象不在使用時調用recycle()釋放內存4

九、屏幕適配:(代碼適配)

 

\
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved