android面試題目及其答案
android面試中,面試者想要有好的表現,那么面試前的準備很重要,你了解安卓面試題目嗎?你會作答了嗎?以下是小編幫你們整理的android面試題目及其答案,一起來學習啦。
android面試題目及其答案篇一
1、顯式intent和隱式intent的區別是什么(Android)
Intent定義:Intent是一種在不同組件之間傳遞的請求消息,是應用程序發出的請求和意圖。作為一個完整的消息傳遞機制,Intent不僅需要發送端,還需要接收端。
顯式Intent定義:對于明確指出了目標組件名稱的Intent,我們稱之為顯式Intent; 隱式Intent定義:對于沒有明確指出目標組件名稱的Intent,則稱之為隱式Intent。 說明:Android系統使用IntentFilter 來尋找與隱式Intent相關的對象。
2、如何優化ListView
1)如果自定義適配器,那么在getView方法中要考慮方法傳進來的參數contentView是否為null,如果為null就創建contentView并返回,如果不為null則直接使用。在這個方法中盡可能少創建view;
2)給contentView設置tag(setTag()),傳入一個viewHolder對象,用于緩存要顯示的數據,可以達到圖像數據異步加載的效果;
3)如果listview需要顯示的item很多,就要考慮分頁加載。比如一共要顯示100條或者更多的時候,我們可以考慮先加載20條,等用戶拉到列表底部的時候再去加載接下來的20條。
3、簡述通過contentResolver獲取ContentProvider內容的基本步驟
1)得到ContentResolver類對象:ContentResolver cr = getContentResolver();
2)定義要查詢的字段String數組;
3)使用cr.query();返回一個Cursor對象;
4)使用while循環得到Cursor里面的內容。
4、描述4 種 activity 的啟動模式
1)standard :系統的默認模式,一次跳轉即會生成一個新的實例。假設有一個activity命名為MainActivity,執行語句:
startActivity(new Intent(MainActivity.this, MainActivity.class))后,MainActivity將跳轉到另外一個MainActivity,也就是現在的Task棧里面有MainActivity的兩個實例。按返回鍵后你會發現仍然是在MainActivity(第一個)里面。
2)singleTop:singleTop 跟standard 模式比較類似。如果已經有一個實例位于Activity棧的頂部時,就不產生新的實例,而只是調用Activity中的newInstance()方法。如果不位于棧頂,會產生一個新的實例。例:當MainActivity為 singleTop 模式時,執行跳轉后棧里面依舊只有一個實例,如果現在按返回鍵程序將直接退出。
3)singleTask: singleTask模式和后面的singleInstance模式都是只創建一個實例的。在這種模式下,無論跳轉的對象是不是位于棧頂的activity,程序都不會生成一個新的實例(當然前提是棧里面已經有這個實例)。這種模式相當有用,在以后的多activity開發中,經常會因為跳轉的關系導致同個頁面生成多個實例,這個在用戶體驗上始終有點不好,而如果你將對應的activity聲明為 singleTask 模式,這種問題將不復存在。
4)singleInstance: 設置為 singleInstance 模式的 activity 將獨占一個task(感覺task可以理解為進程),獨占一個task的activity與其說是activity,倒不如說是一個應用,這個應用與其他activity是獨立的,它有自己的上下文activity。
5、Android中如何訪問自定義ContentProvider?
通過ContentProvider的Uri訪問開放的數據。
1)ContenResolver對象通過Context提供的方法getContenResolver()來獲得。
2)ContenResolver提供了以下方法來操作:insert delete update query這些方法分別會調用ContenProvider中與之對應的方法并得到返回的結果。
6、Android中的動畫有哪幾類,它們的特點和區別是什么?
Android中動畫可以分為兩大類:幀動畫、補間動畫
1)補間動畫:你定義一個開始和結束,中間的部分由程序運算得到。主要有:旋轉、平移、放縮和漸變;Alphaanimation(漸變型動畫)、scaleAnimation(縮放型動畫)、 TranslateAnimation(平移型動畫)、 RotateAnimation(旋轉型動畫)、
2)逐幀動畫:Frame(把一連串的圖片進行系列化連續播放,如同放電影的效果),它是通過播放一張一張圖片來達到動畫的效果。
android面試題目及其答案篇二
1. 什么是Activity?
四大組件之一,一般一個用戶交互界面對應一個activity
setContentView() ,// 要顯示的布局, activity 是Context的子類,同時實現了window.callback和keyevent.callback, 可以處理與窗體用戶交互的事件.
開發常用的的有FragmentActivitiy,ListActivity , PreferenceActivity ,TabAcitivty等„
如果界面有共同的特點或者功能的時候,還會自己定義一個BaseActivity.進度對話框的顯示與銷毀
2. 請描述一下Activity 生命周期。
生命周期描述的是一個類 從創建(new出來)到死亡(垃圾回收)的過程中會執行的方法.. 在這個過程中 會針對不同的生命階段會調用不同的方法
Activity從創建到銷毀有多種狀態,從一種狀態到另一種狀態時會激發相應的回調方法,這些回調方法包括:oncreate ondestroy onstop onstart onresume onpause
其實這些方法都是兩兩對應的,onCreate創建與onDestroy銷毀;
onStart可見與onStop不可見;onResume可編輯(即焦點)與onPause;
這6個方法是相對應的,那么就只剩下一個onRestart方法了,這個方法在什么時候調用呢? 答案就是:在Activity被onStop后,但是沒有被onDestroy,在再次啟動此Activity時就調用onRestart(而不再調用onCreate)方法;
如果被onDestroy了,則是調用onCreate方法。
最后講自己項目中的經驗,比如說樂玩每次進入某個界面的時候都要看到最新的數據,這個刷新列表的操作 就放在onStart()的方法里面.這樣保證每次用戶看到的數據都是最新的.
比如:多媒體播放, 播放來電話. onStop() 視頻, 視頻聲音設置為0 , 記錄視頻播放的位置 mediaplayer.pause();
onStart() 根據保存的狀態恢復現場. mediaplayer.start();
在讀文檔的時候 還發現 activity還有兩個方法 onPostResume() 和 OnPostCreate()這兩個生命周期的方法,不過開發的時候沒有用到過.
3. 兩個Activity之間跳轉時必然會執行的是哪幾個方法。
一般情況比如說有兩個activity,分別叫A,B ,當在A里面激活B組件的時候, A 會調用 onPause()方法,然后B 調用onCreate() ,onStart(), OnResume() ,這個時候B覆蓋了窗體, A會調用onStop()方法. 如果B呢 是個透明的,或者是對話框的樣式, 就不會調用onStop()方法
4. 橫豎屏切換時候Activity的生命周期。
這個生命周期跟清單文件里的配置有關系
1、不設置Activity的android:configChanges時,切屏會重新調用各個生命周期 默認首先銷毀當前activity,然后重新加載
2、設置Activity的android:configChanges="orientation|keyboardHidden|screenSize"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法。游戲開發中, 屏幕的朝向都是寫死的.
android面試題目及其答案篇三
1. 如何將一個Activity設置成窗口的樣式。
可以自定義一個activity的樣式
android:theme="@android:style/Theme.Dialog"
2. 你后臺的Activity被系統 回收怎么辦?如果后臺的Activity由于某原因被系統回收了,如何在被系統回收之前保存當前狀態?
除了在棧頂的activity,其他的activity都有可能在內存不足的時候被系統回收,一個activity越處于棧底,被回收的可能性越大.
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putLong("id", 1234567890);
}
public void onCreate(Bundle savedInstanceState) {
//判斷 savedInstanceState是不是空.
//如果不為空就取出來
super.onCreate(savedInstanceState);
}
3. service是否在main thread中執行, service里面是否能執行耗時的操作?
默認情況,如果沒有顯示的指定service所運行的進程, Service和activity是運行在當前app所在進程的main thread(UI主線程)里面
service里面不能執行耗時的操作(網絡請求,拷貝數據庫,大文件 )
在子線程中執行 new Thread(){}.start();
Thread.currentThread().getName();
特殊情況 ,可以在清單文件配置 service 執行所在的進程 ,讓service在另外的進程中執行
看了“android面試題目及其答案”的人還看過:
1.
2.
3.
4.
5.