• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 前輩推薦的 Android 70道面試題匯總寶典面試(7)

    發表于:2012-02-02來源:未知作者:admin點擊數: 標簽:
    在不少手機 論壇 都會有針對某一型號的子論壇,對一款手機的使用心得交流,并分享軟件資源。而對于Android平臺手機,由于廠商豐富,產品類型多樣,這

      在不少手機論壇都會有針對某一型號的子論壇,對一款手機的使用心得交流,并分享軟件資源。而對于Android平臺手機,由于廠商豐富,產品類型多樣,這樣使用同一款機型的用戶越來越少,缺少統一機型的程序強化。舉個稍顯不當的例子,現在山寨機泛濫,品種各異,就很少有專門針對某個型號山寨機的討論和群組,除了哪些功能異常搶眼、頗受追捧的機型以外。

      五、過分依賴開發商缺少標準配置

      在使用PC端的Windows Xp系統的時候,都會內置微軟Windows Media Player這樣一個瀏覽器程序,用戶可以選擇更多樣的播放器,如Realplay或暴風影音等。但入手開始使用默認的程序同樣可以應付多樣的需要。在Android平臺中,由于其開放性,軟件更多依賴第三方廠商,比如Android系統的SDK中就沒有內置音樂 播放器,全部依賴第三方開發,缺少了產品的統一性。

      52. 什么是ANR 如何避免它?

      答:ANR:Application NotResponding,五秒

      在Android中,活動管理器和窗口管理器這兩個系統服務負責監視應用程序的響應。當出現下列情況時,Android就會顯示ANR對話框了:

      對輸入事件(如按鍵、觸摸屏事件)的響應超過5秒

      意向接受器(intentReceiver)超過10秒鐘仍未執行完畢

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

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

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

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

      54. Android本身的api并未聲明會拋出異常,則其在運行時有無可能拋出runtime異常,你遇到過嗎?諾有的話會導致什么問題?如何解決?

      55. 簡要解釋一下activity、 intent 、intent filter、service、Broadcase、BroadcaseReceiver

      答:一個activity呈現了一個用戶可以操作的可視化用戶界面

      一個service不包含可見的用戶界面,而是在后臺無限地運行

      可以連接到一個正在運行的服務中,連接后,可以通過服務中暴露出來的借口與其進行通信

      一個broadcast receiver是一個接收廣播消息并作出回應的component,broadcastreceiver沒有界面

      intent:content provider在接收到ContentResolver的請求時被激活。

      activity, service和broadcast receiver是被稱為intents的異步消息激活的。

      一個intent是一個Intent對象,它保存了消息的內容。對于activity和service來說,它指定了請求的操作名稱和待操作數據的URI

      Intent對象可以顯式的指定一個目標component。如果這樣的話,android會找到這個component(基于manifest文件中的聲明)并激活它。但如果一個目標不是顯式指定的,android必須找到響應intent的最佳component。

      它是通過將Intent對象和目標的intent filter相比較來完成這一工作的。一個component的intent filter告訴android該component能處理的intent。intent filter也是在manifest文件中聲明的。

      56.  IntentService有何優點?

      答:IntentService 的好處

      * Acitivity的進程,當處理Intent的時候,會產生一個對應的Service

      * Android的進程處理器現在會盡可能的不kill掉你

      * 非常容易使用

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

      1、不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次

      2、設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執行一次

      3、設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法

      如何將SQLite數據庫(dictionary.db文件)與apk文件一起發布?

      解答:可以將dictionary.db文件復制到Eclipse Android工程中的res aw目錄中。所有在res aw目錄中的文件不會被壓縮,這樣可以直接提取該目錄中的文件??梢詫ictionary.db文件復制到res aw目錄中

      58. 如何將打開res aw目錄中的數據庫文件?

      解答:在Android中不能直接打開res aw目錄中的數據庫文件,而需要在程序第一次啟動時將該文件復制到手機內存或SD卡的某個目錄中,然后再打開該數據庫文件。復制的基本方法是使用getResources().openRawResource方法獲得res aw目錄中資源的 InputStream對象,然后將該InputStream對象中的數據寫入其他的目錄中相應文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法來打開任意目錄中的SQLite數據庫文件。

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

      答:a:從MVC的角度考慮(應用程序內)

      其實回答這個問題的時候還可以這樣問,android為什么要有那4大組件,現在的移動開發模型基本上也是照搬的web那一套MVC架構,只不過是改了點嫁妝而已。android的四大組件本質上就是為了實現移動或者說嵌入式設備上的MVC架構,它們之間有時候是一種相互依存的關系,有時候又是一種補充關系,引入廣播機制可以方便幾大組件的信息和數據交互。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>