Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android開發找工作之前先看看這些知識點吧

Android開發找工作之前先看看這些知識點吧

編輯:關於android開發

Android開發找工作之前先看看這些知識點吧


1.Listview列表效率優化

(1)利用convertview回收視圖
(2)采用ViewHolder模式
(3) 異步加載圖片
(4) 快速滑動時不加載圖片
(5) 如果自定義的item中有圖片,需要處理圖片(減少圖片所占內存)
a.對圖片進行邊界壓縮 b.用option類來保存圖片大小 c.避免圖片的實時縮放,最好預先縮放到視圖大小
(6)盡量避免在listview適配器中使用線程,因為線程是產生內存洩露的主要原因在於線程的生命周期不可控。

2.應用內存優化

(1)bitmap設置圖片大小(優化內存溢出)
BitmapFactory.Option option = new BitmapFactory.Option();
option.inSampleSize = 2; //將視圖寬、高都變為原來的1/2
(2)bitmap對象銷毀,可以借助recycle()方法讓GC回收bitmap對象。
(3)盡量避免static成員變量引用資源消耗過多的實例,如:context
(4)使用Application的context
(5)及時關閉資源,如在查詢數據庫時需要及時關閉cursor
(6)對經常使用的圖片使用軟引用保存
(7)線程也是造成內存洩露的一個重要原因,在於線程的生命周期不可控制,解決方法:
a.將線程內部類改為靜態內部類
b.用弱引用來保存context引用
(8)使用.9圖片

3.什麼是ANR 如何避免它?

ANR:Application Not Responding,五秒在Android中,活動管理器和窗口管理器這兩個系統服務負責監視應用程序的響應。當出現下列情況時,Android就會顯示ANR對話框了:
對輸入事件(如按鍵、觸摸屏事件)的響應超過5秒
意向接受器(intentReceiver)超過10秒鐘仍未執行完畢

Android應用程序完全運行在一個獨立的線程中(例如main)。這就意味著,任何在主線程中運行的,需要消耗大量時間的操作都會引發ANR。因為此時,你的應用程序已經沒有機會去響應輸入事件和意向廣播(Intent broadcast)。

因此,任何運行在主線程中的方法,都要盡可能的只做少量的工作。特別是活動生命周期中的重要方法如onCreate()和 onResume()等更應如此。潛在的比較耗時的操作,如訪問網絡和數據庫;或者是開銷很大的計算,比如改變位圖的大小,需要在一個單獨的子線程中完成 (或者是使用異步請求,如數據庫操作)。但這並不意味著你的主線程需要進入阻塞狀態已等待子線程結束 — 也不需要調用Therad.wait()或者Thread.sleep()方法。取而代之的是,主線程為子線程提供一個句柄(Handler),讓子線程 在即將結束的時候調用它。使用這種方法涉及你的應用程序,能夠保證你的程序 對輸入保持良好的響應,從而避免因為輸入事件超過5秒鐘不被處理而產生的ANR。這種實踐需要應用到所有顯示用戶界面的線程,因為他們都面臨著同樣的超時 問題。

4.什麼情況會導致Force Close ?如何避免?能否捕獲導致其的異常?

一般像空指針啊,可以看起logcat,然後對應到程序中 來解決錯誤

5.橫豎屏切換時候activity的生命周期?

1)、不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次
2)、設置Activity的android:configChanges=”orientation”時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執行一次
3)、設置Activity的android:configChanges=”orientation|keyboardHidden”時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法

6.Android引入廣播機制的用意?

a:從MVC的角度考慮(應用程序內)
android的四大組件本質上就是為了實現移動或者說嵌入式設備上的MVC架構,它們之間有時候是一種相互依存的關系,有時候又是一 種補充關系,引入廣播機制可以方便幾大組件的信息和數據交互。
b:程序間互通消息(例如在自己的應用程序內監聽系統來電)
c:效率上(參考UDP的廣播協議在局域網的方便性)
d:設計模式上(反轉控制的一種應用,類似監聽者模式)

7. Android中如何防止apk被反編譯

8. 多線程結合異步回調的使用。

9. Android物種數據存儲方式及使用。

10. 解析XML文件的幾種方式,及優缺點。

XML解析主要有三種方式,SAX、DOM、PULL。常規在PC上開發我們使用Dom相對輕松些,但一些性能敏感的數據庫或手機上還是主要采用SAX方 式,SAX讀取是單向的,優點:不占內存空間、解析屬性方便,但缺點就是對於套嵌多個分支來說處理不是很方便。而DOM方式會把整個XML文件加載到內存 中去,這裡Android開發網提醒大家該方法在查找方面可以和XPath很好的結合如果數據量不是很大推薦使用,而PULL常常用在J2ME對於節點處 理比較好,類似SAX方式,同樣很節省內存,在J2ME中我們經常使用的KXML庫來解析。Android的xml文件解析就是通過pull解析的。

11. Android消息處理機制(Handler、Looper)的使用。

12. 如果Activity被回收怎麼辦?

Activity在銷毀時會調用onSaveInstanceState(Bundle bundle)方法,這時可以對數據進行存儲,在Activity再次onCreate(Bundle bundle)的時候去獲取bundle對象讀取數據。

13. MVC的使用。

14. 問項目中會用到什麼設計模式,舉例等。

15. Android四大組件,是做什麼用的

16.如何監聽程序crash信息

Activity implement UncaughtExceptHandler 接口

17.anr日志寫在哪裡的

可以通過命令行獲取trace.txt文件

18.tomcat做什麼用

把電腦配置成服務器

19.dp、sp什麼區別

20.handler機制原理是什麼

21.子線程能操作UI嗎

子線程不能直接操作UI,但是可以通過以下方法進行操作:
Activity.runOnUiThread()
View.post()
Handler
AsyncTask

22.mvc的理解,在開發時怎麼展現

23.用過的第三方框架的原理

24.http請求結果,返回數值的理解

200:請求成功
401:未認證
403:禁止訪問
404:找不到指定資源
500:服務器內部錯誤
504:網關超時

25.activity生命周期

onCreate:初始化數據
onStart:頁面可見、不可交互
onResume:頁面可見、可交互
onPause:頁面可見、不可交互,保存數據
onStop:頁面不可見
onDestory:銷毀頁面
onRestart

26.怎麼退出一個應用

System.exit(0);

27.怎麼在android 應用裡打開浏覽器,對應intent要指定什麼類型

Intent intent=new Intent("android.intent.action.View");
intent.setData(Uri.prase("www.baidu.com"));
intent.setClassName();//指定浏覽器

28.自定義的接口是什麼樣的

29.post和get的區別

get:用於請求數據,參數附在url後面,http本身對請求長度沒有限制,但某些浏覽器和服務器對長度有限制
post:用於發生數據,參數放在請求體中,更安全

30.http和https的區別

31.怎麼回收String對象

32.怎麼進行垃圾回收

33.線程間的通信

34.HashMap和HashTable的區別

HashMap是JDK1.2之後推出的,允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。

35.Map的子類

HashMap:無序,不能重復,鍵可以為null
HashTable:無序,不能重復,鍵不可以為null
TreeMap:有序,不能重復
WeakHashMap:弱引用
IdentityHashMap:無序,可以重復

36.List的子類

37.hashCode和equals區別

equals比較結果相同,hashcode一定相同;hashcode相同,equals比較結果不一定相同

38.如何重寫equals方法

Person p1=new Person(“tom”,21);
Person p2=new Person(“tom”,21);
請問p1.equals(p2)的結果是什麼?
答案是false,因為object.equals()默認比較的是引用地址,若想要 p1.equals(p2)的結果為true,需要重寫equals方法。

39.OOM的處理

oom是內存溢出,一般發生在圖片處理時,所以可對圖片進行壓縮
1.BitmapFactory.option 邊界壓縮
2.Bitmap.compress() 改變圖片存儲
3.使用軟引用,內存不足時可以釋放資源,避免內存溢出

40.java引用類型有那些?分別有什麼特點

類、接口、數組
一、從概念方面來說
基本數據類型:變量名指向具體的數值
引用數據類型:變量名指向存數據對象的內存地址,即變量名指向hash值
二、從內存構建方面來說
基本數據類型:變量在聲明之後java就會立刻分配給他內存空間
引用數據類型:它以特殊的方式(類似C指針)指向對象實體(具體的值),這類變量聲明時不會分配內存,只是存儲了一個內存地址。
三、從使用方面來說
基本數據類型:使用時需要賦具體值,判斷時使用“==”號
引用數據類型:使用時可以賦null,判斷時使用equals方法

41.java的異常處理機制有什麼優點

第一,當發生錯誤時,程序不至於崩潰。
第二,當發生錯誤時,可以在短時間內找到錯誤所在行,能節省時間。

42.jvm產生內存洩漏的原因是什麼

43.如何優化布局?include、merge、viewStub有什麼使用場景

標簽能夠重用布局文件。
標簽在UI的結構優化中起著非常重要的作用,它可以刪減多余的層級,優化UI。
標簽最大的優點是當你需要時才會加載,使用他並不會影響UI初始化時的性能。

44.String和StringBuffer有什麼區別

StringBuffer對象的內容可以修改;而String對象一旦產生後就不可以被修改,重新賦值其實是兩個對象。

45.try-catch-finally代碼塊的執行順序是什麼樣的

try { //執行的代碼,其中可能有異常。一旦發現異常,則立即跳到catch執行。否則不會執行catch裡面的內容 }
catch { //除非try裡面執行代碼發生了異常,否則這裡的代碼不會執行 。catch可以有多個,也可以沒有}
finally { //不管什麼情況都會執行,包括try catch 裡面用了return ,可以理解為只要執行了try或者catch,就一定會執行 finally 。finally可以沒有,也可以只有一個;如果沒有catch語句塊,那麼finally塊就是必須的}

46.數組有沒有length()這個方法? String有沒有length()這個方法?

數組沒有length()這個方法,有length的屬性。String有有length()這個方法。

47.char能不能存儲一個中文漢字?為什麼?

能。Java中的一個char是2個字節,java采用unicode,2個字節來表示一個字符。一個數字或英文或漢字都是一個字符,只不過數字和英文時,存儲的2個字節的第一個字節都為0,就是浪費了點空間。存漢字就占滿了2個字節。

48.fragment有什麼優缺點?怎麼理解activity和fragment的關系?

49.Thread和service的區別

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