標籤:
1、下面不可以退出Activity的是?(D)
A、finish()
B、拋異常強制退出
C、System.exit(0)
D、onStop()
解析:
A, finish() 方法就是退出activityB. actiivity中出現拋異常,會彈出框,強制退出當前activity的。C. System.exit(0); 這是退出所有activity使用的。D. onStop() 只是activity一個周期方法,此時還沒退出,只有走到onDestory()才退出 2、通過Intent傳遞一些位元據的方法有哪些? (C) A、使用Serializable介面實現序列化,這是java常用的方法 B、實現Parcelable介面,這裡Andriod的部分分類比如Bitmap類就已經實現了,同時Parcelable在Android AIDL中交換資料也很常見
A、A
B、B
C、AB
3、下面關於Android dvm的進程和Linux的進程,應用程式的進程說法正確的是 (D)
A、DVM指dalivk的虛擬機器.每一個Android應用程式都在它自己的進程中運行,不一定擁有一個獨立 的Dalvik虛擬機器執行個體.而每一個DVM都是在Linux中的一個進程,所以說可以認為是同一個概念.
B、DVM指dalivk的虛擬機器.每一個Android應用程式都在它自己的進程中運行,不一定擁有一個獨立的Dalvik虛擬機器執行個體.而每一個DVM不一定都是在Linux 中的一個進程,所以說不是一個概念.
C、DVM指dalivk的虛擬機器.每一個Android應用程式都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機器執行個體.而每一個DVM不一定都是在Linux 中的一個進程,所以說不是一個概念
D、DVM指dalivk的虛擬機器.每一個Android應用程式都在它自己的進程中運行,都擁有一個獨立的 Dalvik虛擬機器執行個體.而每一個DVM都是在Linux 中的一個進程,所以說可以認為是同一個概念.
解析:
一句話:每一個DVM都是在Linux 中的一個進程! 選擇D...先來概念:
我們來看看每個android進程如何產生的,
下面來對Zygote進程孵化新進程的過程做進一步瞭解:
- Zygote進程調用fork()函數建立出Zygote‘ 子進程,
- 子進程Zygote‘ 共用父進程Zygote的代碼區與串連資訊。
如所示,Fork()橙色箭頭左邊是Zygote進程,右邊是建立出的Zygote‘子進程;然後Zygote’ 子進程將執行流程交給應用程式A,Android程式開始運行。新產生的應用程式A會使用已有Zygote父進程的庫與資源的串連資訊,所以運行速度很快。
另外,對於,Zygote啟動後,初始並運行DVM,而後將需要的類與資源載入到記憶體中。隨後調用fork()建立出Zygote‘ 子進程,接著子進程動態載入並運行應用程式A。 啟動並執行應用程式A會使用Zygote已經初始化並啟動啟動並執行DVM代碼,通過使用已載入至記憶體中的類與資源來加快運行速度。
Android進程模型
Linux通過調用start_kernel函數來啟動核心,當核心啟動模組啟動完成後,將啟動使用者空間的第一個進程——Init進程,為Android系統的進程模型圖:
從可以看出,Linux核心在啟動過程中,建立一個名為Kthreadd的核心進程,PID=2,用於建立核心空間的其他進程;同時建立第一個使用者空間Init進程,該進程PID = 1,用於啟動一些本地進程,比如Zygote進程,而Zygote進程也是一個專門用於孵化Java進程的本地進程,清晰地描述了整個Android系統的進程模型
4、使用Toast提示時,關於提示時間長度,下面說法正確的是( A ).
A、顯示時間長度預設只有2種設定
B、可以自訂顯示時間長度
C、傳入30時,提示會顯示30秒鐘
D、當自訂顯示時間長度時,比如傳入30,程式會拋出異常
解析:
A.顯示時間長度只有2種設定
Toast.makeText(this, str, Toast.LENGTH_LONG).show();
toast只能設定為 2s和3.5s ,其它的值都無效,API的文檔雖然寫的第三個參數是時間,但是Framework裡作了重定義,限定了 2s和3.5s這兩個值 ,對應 Toast.LENGTH_SHORT和Toast.LENGTH_LONG,實現方式在NotificationManagerService.java的scheduleTimeoutLocked()這個函數裡。
Toast的預設顯示時間有兩個,分別為Toast.LENGTH_SHORT和Toast.LENGTH_LONG
5、Intent傳遞資料時,下列的資料類型不可以被傳遞的是( D )
A、Serializable
B、File
C、Parcelable
D、Thread
解析:
Serializable :將 Java 對象序列化為二進位檔案的 Java 序列化技術是 Java系列技術中一個較為重要的技術點,在大部分情況下,開發人員只需要瞭解被序列化的類需要實現 Serializable 介面,使用ObjectInputStream 和 ObjectOutputStream 進行對象的讀寫。
Parcelable :
android提供了一種新的類型:Parcel。本類被用作封裝資料的容器,封裝後的資料可以通過Intent或IPC傳遞。 除了基本類型以
外,只有實現了Parcelable介面的類才能被放入Parcel中。
是GOOGLE在安卓中實現的另一種序列化,功能和Serializable相似,主要是序列化的方式不同
Intent 傳遞的資料必須能夠被序列化,凡是能被序列化的資料都能採用Intent傳遞
6、當 Activity 被消毀時,如何儲存它原來的狀態( A )
A、實現 Activity 的 onSaveInstanceState()方法
B、實現 Activity 的 onSaveInstance()方法
C、實現 Activity 的 onInstanceState()方法
D、實現 Activity 的 onSaveState()方法
解析:
onSaveInstanceState()
當你的程式中某一個Activity A在運行時,主動或被動地運行另一個新的Activity B,這個時候A會執行onSaveInstanceState()。B完成以後又會來找A,這個時候就有兩種情況:一是A被回收,二是A沒有被回收,被回收的A就要重新調用onCreate()方法,不同於直接啟動的是這回onCreate()裡是帶上了參數savedInstanceState;而沒被收回的就直接執行onResume(),跳過onCreate()了。
7、關於ServiceConnection介面的onServiceConnected()方法的觸發條件描述正確的是?( B )
A、bindService()方法執行成功後
B、bindService()方法執行成功同時onBind()方法返回非空IBinder對象
C、Service的onCreate()方法和onBind()方法執行成功後
D、Service的onCreate()和onStartCommand()方法啟動成功後
解析:
bindService是非同步呼叫和Service進行綁定, 如果綁定成功, 則會調用ServiceConnection的onServiceConnected
當調用bindService方法後就會回調Activity的onServiceConnected,在這個方法中會向Activity中傳遞一個IBinder的執行個體,Acitity需要儲存這個執行個體
8、Android系統對下列哪些對象提供了資源集區 ( AC )
A、Message
B、Thread
C、AsyncTask
D、Looper
解析:
A.Message提供了訊息池,有靜態方法Obtain從訊息池中取對象;B.Thread預設不提供資源集區,除非使用線程池ThreadPool管理;C.AsynTask是線程池改造的,池裡 預設提供(核心數+1)個線程進行並行作業,最大支援(核心數 * 2 + 1)個線程,超過後會丟棄其他任務;D.Looper,每個Looper建立時建立一個訊息佇列和線程對象,也不是資源集區;因此答案為AC
9、下列對android NDK的理解正確的是( ABCD )
A、NDK是一系列工具的集合
B、NDK 提供了一份穩定、功能有限的 API 標頭檔聲明
C、使 “Java+C” 的開發方式終於轉正,成為官方支援的開發方式
D、NDK 將是 Android 平台支援 C 開發的開端
10、下面是屬於GLSurFaceView特性的是?( ABC )
A、管理一個surface,這個surface就是一塊特殊的記憶體,能直接排版到android的視圖view上。
B、管理一個EGL display,它能讓opengl把內容渲染到上述的surface上。
C、讓渲染器在獨立的線程裡運作,和UI線程分離。
D、可以直接從記憶體或者DMA等硬體介面取得映像資料
解析:
一個GLSurfaceView類 , 具有以下特點 :
1.管理一個平面, 這個平面是一個特殊的記憶體塊 , 它可以和 android 視圖系統混合 .
2.管理一個EGL 顯示 , 它能夠讓 OpenGL 渲染到一個平面 .
3.接受一個使用者提供的實際顯示的Renderer 對象 .
4.使用一個專用線程去渲染從而和UI 線程解耦 .
5.支援on-demand 和連續的渲染.
6.可選的包, 追蹤 和 / 或者錯誤檢查這個渲染器的 OpenGL 調用 .
Android專項面試訓練題(一)