- 相關推薦
android面試題(6)
找到對應的瀏覽器的意圖,傳遞數據URI , 激活這個意圖
Intent intent = new Intent();
intent.setClassName(packageName, className);
Intent.setdata(uri);
33. 對android主線程的運用和理解。
主ui線程不能執行耗時的操作,
34. 對android虛擬機的理解,包括內存管理機制垃圾回收機制。
虛擬機很小,空間很小,談談移動設備的虛擬機的大小限制 16M ,
談談加載圖片的時候怎么處理大圖片的,
垃圾回收,沒有引用的對象,在某個時刻會被系統gc掉.
System.gc(); 不是立刻去執行垃圾回收.
手機電視. 視頻點播. Onstop() 通知gc();
別的界面圖片 白板.
遇到一個不可復現的bug, 不解決 won't fix
35. Framework工作方式及原理,Activity是如何生成一個view的,機制是什么。
反射 , 配置文件
可以講下activity的源碼,比如說 每個activity里面都有window.callback和keyevent.callback,一些回調的接口或者函數吧. 框架把activity創建出來就會調用里面的這些回調方法,會調用activity生命周期相關的方法.
setContentView();
普通的情況:
Activity創建一個view是通過 ondraw 畫出來的, 畫這個view之前呢,還會調用onmeasure方法來計算顯示的大小.
Surfaceview 直接操作硬件 opengl .
圖像要想被顯示到界面上, 需要設備顯卡, 顯存.
寫到顯存.
36. android本身的一些限制,比如apk包大小限制,讀取大文件時的時間限。
這個問題問的有問題, apk包大小限制不好說,
極品飛車有100M 還是能裝到手機上,
世面google market 上大程序 主程序 很小 5~10M 下載sdcard
15分鐘之內 申請退款
apk包,精簡包, 素材存放在服務器. 游戲程序.
讀大文件的時間限制應該是main線程里面的時間限制吧.5秒.
37. 如何加載的音樂信息,如何改善其效率。
Android提供mediascanner,mediaStore等接口, 音樂文件的信息都會存放到系統的數據庫表中,可以通過content provider獲取,
顯示出來,改善效率,是個常見問題, 可以從以下幾個方面作答,
分批加載數據, 延時加載數據, 合理使用緩存等...
Java虛擬機, 目標, 加快java程序執行速度
預先加載一些 都會的使用的大的class的字節碼, 提前加載.
時間換時間
空間換時間
38. ListView如何提高其效率?
復用convertview , 歷史的view對象
異步加載數據, 分頁加載數據, onscallLinster();
Static class ViewHolder
使用靜態的view對象 避免創建過多的view.
把下載后的數據緩存到數據庫里
客戶端和服務器 協同 作戰 .
Http 請求
If-modify-since : 檢查數據是否更新 1.html 2001年 302 拿緩存
39. 啟動應用后,改變系統語言,應用的語言會改變么?
會
40. 啟動一個程序,可以主界面點擊圖標進入,也可以從一個程序中跳轉過去,二者有什么區別?
區別是根據activity在manifest里面的配置,這個activity可能會放在不同的task棧里面
intent設置的flag flag_new_task
41. Android程序與Java程序的區別?
Android程序用android sdk開發,java程序用javasdk開發.
Android SDK引用了大部分的Java SDK,少數部分被Android SDK拋棄,比如說界面部分,java.awt swing package除了java.awt.font被引用外,其他都被拋棄,在Android平臺開發中不能使用。
android sdk 添加工具jar httpclient , pull openGL
將Java 游戲或者j2me程序移植到Android平臺的過程中,
Android SDK 與Java SDK的區別是很需要注意的地方。
1.6的 不支持 httpUrlconning 獲取 last-modified 信息的處理
simpleDataFormat
42. Android中Task任務棧的分配。
假如有三個Activity A B C,A跳到B,然后B跳到C,現在需要從C跳到A如何傳遞數據而且使效率最高呢?
首先我們來看下Task的定義,Google是這樣定義Task的:a task is what the user experiences as an "application." It's a group of related activities, arranged in a stack. A task is a stack of activities, not a class or an element in the manifest file. 這意思就是說Task實際上是一個Activity棧,通常用戶感受的一個Application就是一個Task。從這個定義來看,Task跟Service或者其他Components是沒有任何聯系的,它只是針對Activity而言的。
Activity有不同的啟動模式, 可以影響到task的分配
Task,簡單的說,就是一組以棧的模式聚集在一起的Activity組件集合。它們有潛在的前后驅關聯,新加入的Activity組件,位于棧頂,并僅有在棧頂的Activity,才會有機會與用戶進行交互。而當棧頂的Activity完成使命退出的時候,Task會將其退棧,并讓下一個將跑到棧頂的Activity來于用戶面對面,直至棧中再無更多Activity,Task結束。
事件 Task棧(粗體為棧頂組件)
點開Email應用,進入收件箱(Activity A) A
選中一封郵件,點擊查看詳情(Activity B) AB
點擊回復,開始寫新郵件(Activity C) ABC
寫了幾行字,點擊選擇聯系人,進入選擇聯系人界面(Activity D) ABCD
選擇好了聯系人,繼續寫郵件 ABC
寫好郵件,發送完成,回到原始郵件 AB
點擊返回,回到收件箱 A
退出Email程序 null
如上表所示,是一個實例。從用戶從進入郵箱開始,到回復完成,退出應用整個過程的Task棧變化。這是一個標準的棧模式,對于大部分的狀況,這樣的Task模型,足以應付,但是,涉及到實際的性能、開銷等問題,就會變得殘酷許多。
【android面試題(6)】相關文章:
android面試題目09-08
Android工程師的面試題08-07
Android工程師面試題10-24
關于Android工程師面試題09-19
Microsoft面試題09-04
iOS面試題07-10
公司面試題09-12
hibernate面試題10-18
英語面試題精選06-13
小升初面試題06-10