1.listview的優化html
①convertView的使用,主要優化加載佈局問題java
listivew每次滾動都會調用getview()方法,因此優化getview是重中之重。linux
②內部類ViewHolder的使用android
主要優化getView方法中每次回調用findviewByID()方法來獲取一次控件的代碼算法
③使用分段加載數據庫
④使用分頁加載緩存
2.按返回鍵如何退出應用程序安全
①先監聽是否按了返回按鈕網絡
/** * 監聽Back鍵按下事件,方法1: * 注意: * super.onBackPressed()會自動調用finish()方法,關閉 * 當前Activity. * 若要屏蔽Back鍵盤,註釋該行代碼便可 */ @Override public void onBackPressed() { super.onBackPressed(); System.out.println("按下了back鍵 onBackPressed()"); } /** * 監聽Back鍵按下事件,方法2: * 注意: * 返回值表示:是否能徹底處理該事件 * 在此處返回false,因此會繼續傳播該事件. * 在具體項目中此處的返回值視狀況而定. */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { System.out.println("按下了back鍵 onKeyDown()"); return false; }else { return super.onKeyDown(keyCode, event); } }
②在退出應用程序中全部的activity多線程
1.使用鏈表把要退出的Activity實例保存起來,在要退出時,遍例這個鏈表,調用每一個Activity的finish方法。
2.可使用廣播,每一個Activity中收到這個廣播,本身把本身finish掉。
3.加密算法的區別
DES :加密後密文長度是8個整數倍,DES祕鑰長度:8個字符
AES:AES祕鑰長度:16個字符, AES加密後密文長度是16的整數倍
RSA:祕鑰對:
公鑰和私鑰,祕鑰對不能手動指定,必須有系統生成
加密速度慢:必須分段加密,不能加密大文件,RSA每次最大隻能加密117個字節
公鑰加密私鑰解密;私鑰加密公鑰解密
公鑰互換:連個商家合做須要交互公鑰,可是私鑰不能別人
MD5:消息摘要;:
16(加密後密文長度16個字節),32(密文轉成16進制32個字節)
不可逆
加密後密文長度固定,1kb字符串和1G字符串加密結果長度同樣
Base64
4.native
http://www.javashuo.com/article/p-usexuocz-cd.html
5.域名
android 根據域名獲得IP
https://www.cnblogs.com/zhou-guobao/p/5396038.html
6.圖片緩存
圖片的三級緩存
http://blog.csdn.net/wuyinlei/article/details/50606455
7.什麼是Activity?
四大組件之一,一般一個用戶交互界面對應一個activity。activity 是Context 的子類,同時實現了window.callback
和keyevent.callback, 能夠處理與窗體用戶交互的事件。
8.請描述一下Activity 生命週期
Activity 從建立到銷燬有多種狀態,從一種狀態到另外一種狀態時會激發相應的回調方法,這些回調方法包括:
onCreate onStart onResume onPause onStop onDestroy
在Activity 被onStop 後,可是沒有被onDestroy,在再次啓動此Activity 時就調用onRestart(而
再也不調用onCreate)方法;
若是被onDestroy 了,則是調用onCreate 方法。
9.Activity 的狀態都有哪些?
a) foreground activity
b) visible activity
c) background activity
d) empty process
10.如何保存Activity 的狀態?
Activity 的狀態一般狀況下系統會自動保存的,只有當咱們須要保存額外的數據時才須要使用到這樣的功能。
11.兩個Activity 之間跳轉時必然會執行的是哪幾個方法?
通常狀況下好比說有兩個activity,分別叫A,B,當在A 裏面激活B 組件的時候, A 會調用onPause()方法,而後B 調
用onCreate() ,onStart(), onResume()。
這個時候B 覆蓋了窗體, A 會調用onStop()方法. 若是B 是個透明的,或者是對話框的樣式, 就不會調用A 的
onStop()方法。
12.橫豎屏切換時Activity 的生命週期
此時的生命週期跟清單文件裏的配置有關係。
一、不設置Activity 的android:configChanges 時,切屏會從新調用各個生命週期
默認首先銷燬當前activity,而後從新加載。
2.設置Activity 的android:configChanges=」orientation|keyboardHidden|screenSize」時,切屏不會從新調
用各個生命週期,只會執行onConfigurationChanged 方法。
一般在遊戲開發, 屏幕的朝向都是寫死的。
13.如何將一個Activity 設置成窗口的樣式?
只須要給咱們的Activity 配置以下屬性便可。
android:theme=」@android:style/Theme.Dialog」
14.請描述一下Activity 的啓動模式都有哪些以及各自的特色
1.standard
2.singleTop
3.singleTask
4.singleInstance
15.Service 是否在main thread 中執行, service 裏面是否能執行耗時的操做?
默認狀況,若是沒有顯示的指service 所運行的進程, Service 和activity 是運行在當前app 所在進程的main
thread(UI 主線程)裏面。
service 裏面不能執行耗時的操做(網絡請求,拷貝數據庫,大文件)
16.Activity 怎麼和Service 綁定,怎麼在Activity 中啓動本身對應的Service?
Activity 經過bindService(Intent service, ServiceConnection conn, int flags)跟Service 進行綁定.
在Activity 中能夠經過startService 和bindService 方法啓動Service。
17.請描述一下Service 的生命週期
Service 有綁定模式和非綁定模式,以及這兩種模式的混合使用方式。不一樣的使用方法生命週期方法也不一樣。
非綁定模式:當第一次調用startService 的時候執行的方法依次爲onCreate()、onStartCommand(),(onStart())
當Service 關閉的時候調用onDestory 方法。
綁定模式:第一次bindService()的時候,執行的方法爲onCreate()、onBind()解除綁定的時候會執行
onUnbind()、onDestory()。
18.什麼是IntentService?有何優勢?
IntentService 是Service 的子類,比普通的Service 增長了額外的功能。
會建立獨立的worker 線程來處理全部的Intent 請求;
會建立獨立的worker 線程來處理onHandleIntent()方法實現的代碼,無需處理多線程問題;
全部請求處理完成後,IntentService 會自動中止,無需調用stopSelf()方法中止Service;
爲Service 的onBind()提供默認實現,返回null;
19說說Activity、Intent、Service 是什麼關係
Activity
負責用戶界面的顯示和交互,Service 負責後臺任務的處理。Activity 和Service 之間能夠經過Intent 傳遞數據,所以
能夠把Intent 看做是通訊使者。
20Serializable 和Parcelable 的區別
1.在使用內存的時候,Parcelable 類比Serializable 性能高,因此推薦使用Parcelable 類。
2.Serializable 在序列化的時候會產生大量的臨時變量,從而引發頻繁的GC。
3.Parcelable 不能使用在要將數據存儲在磁盤上的狀況。儘管Serializable 效率低點,但在這種狀況下,仍是建議你用Serializable 。
21Framework
服務端、客戶端、linux驅動
http://blog.csdn.net/rain_butterfly/article/details/48756797
22.進程間通訊
http://www.javashuo.com/article/p-dmaksfqb-ee.html
一、使用Bundle
二、使用文件共享
三、使用Messenger
四、使用AIDL
五、使用ContentProvider
六、使用Socket
23進程和線程的區別
http://blog.csdn.net/qq_17475155/article/details/50899382
24Handler機制
http://blog.csdn.net/A94721990/article/details/78704883
25String、StringBuffer、StringBuilder區別
1.運行速度:StringBuilder > StringBuffer > String
String最慢的緣由:
String爲字符串常量,而StringBuilder和StringBuffer均爲字符串變量,即String對象一旦建立以後該對象是不可更改的,但後二者的對象是變量,是能夠更改的。
2.線程安全:StringBuilder是線程不安全的,而StringBuffer是線程安全的
String:適用於少許的字符串操做的狀況
StringBuilder:適用於單線程下在字符緩衝區進行大量操做的狀況
StringBuffer:適用多線程下在字符緩衝區進行大量操做的狀況
26.List和arraylist的區別
http://blog.csdn.net/erlian1992/article/details/51298276
27Map與HashMap,Hashtable,HashSet的區別
http://blog.csdn.net/wulunbi/article/details/51105028
28棧堆
http://blog.csdn.net/javazejian/article/details/53362993
http://blog.csdn.net/wypblog/article/details/8076324
堆是一顆徹底二叉樹
http://blog.csdn.net/l294265421/article/details/50927538