两个人做人爱视频免费,97久久精品人人搡人妻人人玩,欧洲精品码一区二区三区,999zyz玖玖资源站永久

我要投稿 投訴建議

最新android面試題

時間:2021-02-05 10:05:53 面試試題 我要投稿

2016年最新android面試題

  1.如何避免ANR?

2016年最新android面試題

  答:ANR:Application Not Responding,五秒在Android中,活動管理器和窗口管理器這兩個系統服務負責監視應用程序的響應。當出現下列情況時,Android就會顯示ANR對話框了:   對輸入事件(如按鍵、觸摸屏事件)的響應超過5秒   意向接受器(intentReceiver)超過10秒鐘仍未執行完畢

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

  2. handler機制的原理

  答 :andriod提供了 Handler 和 Looper 來滿足線程間的通信。Handler 先進先出原則。Looper類用來管理特定線程內對象之間的消息交換(Message Exchange)! 1)Looper: 一個線程可以產生一個Looper對象,由它來管理此線程里的Message Queue(消息隊列)! 2)Handler: 你可以構造Handler對象來與Looper溝通,以便push新消息到Message Queue里;或者接收Looper從Message Queue取出)所送來的消息。    3) Message Queue(消息隊列):用來存放線程放入的消息! 4)線程:UI thread 通常就是main thread,而Android啟動程序時會替它建立一個Message Queue。

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

  答:a:從MVC的角度考慮(應用程序內) 其實回答這個問題的時候還可以這樣問,android為什么要有那4大組件,現在的移動開發模型基本上也是照搬的web那一套MVC架構,只不過是改了點嫁妝而已。android的四大組件本質上就是為了實現移動或者說嵌入式設備上的MVC架構,它們之間有時候是一種相互依存的關系,有時候又是一種補充關系,引入廣播機制可以方便幾大組件的信息和數據交互。   b:程序間互通消息(例如在自己的應用程序內監聽系統來電)   c:效率上(參考UDP的廣播協議在局域網的方便性)   d:設計模式上(反轉控制的一種應用,類似監聽者模式)

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

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

  5.如何將一個Activity設置成窗口的樣式。

  講點輕松的吧,可能有人希望做出來的應用程序是一個漂浮在手機主界面的東西,那么很   簡單你只需要設置 一下Activity的主題就可以了在AndroidManifest.xml 中定義 Activity的   地方一句話:   Xml代碼   1. android :theme="@android:style/Theme.Dialog"   3. android:theme="@android:style/Theme.Dialog"   android :theme="@android:style/Theme.Dialog"   android:theme="@android:style/Theme.Dialog"   這就使你的應用程序變成對話框的形式彈出來了,或者   Xml代碼   1. android:theme="@android:style/Theme.Translucent"   3. android:theme="@android:style/Theme.Translucent"   就變成半透明的,[友情提示-.-]類似的這種activity的屬性可以在android.R.styleable 類的AndroidManifestActivity 方法中看到,AndroidManifest.xml中所有元素的屬性的介紹都可以參考這個類android.R.styleable   上面說的.是屬性名稱,具體有什么值是在android.R.style中 可以看到,比如這個"@android:style/Theme.Dialog" 就對應于android.R.style.Theme_Dialog ,('_'換成'.' < --注意:這個是文章內容不是笑臉)就可以用在描述文件 中了,找找類定義和描述文件中的對應關系就都明白了。

  (簡單來說直接在配置文件引入風格。追求效果的應用此用法用到挺多);

  6、IntentService有何優點?

  Acitivity的進程,當處理Intent的時候,會產生一個對應的Service Android的進程處理器現在會盡可能的不kill掉你 非常容易使用

  (這回答其實比較。。。其實我也不知道干嘛使,因為看幫助文檔就說了一個用來處理異步請求的service,工作完了自己停止。沒用過,不做評價)。

  7、 廣播的生命周期?

  廣播的生命周期非常端,當發送之后intent會到AndroidManifest.xml方法中找是不是匹配的action,如果有就調用Receiver,然后獲得Receiver對象,再執行onReceiver方法,這時候Receiver對象就沒有用了,當我們再次點擊按鈕的時候就會重新獲得對象,這就是BroadcastReceiver的生命周期。

  在BroadcastReceiver里不能做一些比較耗時的操作,否則會彈出ANR(Application No Response)的對話框。

  如果需要完成一項耗時的工作,應該通過發送Intent給Service,由Service來完成。這里不能使用子線程來解決,因為BroadcastReceiver的生命周期很短,子線程可能還沒有結束,BroadcastReceiver就先結束了。BroadcastReceiver一旦結束,此時BroadcastReceiver的所在線程很容易在系統需要內存時被優先殺死,因為它屬于空進程(沒有任何活動組件的進程)。如果它的宿主進程被殺死,那么正在工作的子線程也會被殺死,所以采用子線程來解決是不可靠的。

  8、啟動service的兩種方法?有什么區別?

  一種是startService(),另一種是bindService()。這兩者的區別是第一種方式調用者開啟了服務,即會與服務失去聯系,兩者沒有關聯。即使訪問者退出了,服務仍在運行。如需解除服務必須顯式的調用stopService方法。主要用于調用者與服務沒有交互的情況下,也就是調用者不需要獲取服務里的業務方法。比如電話錄音。而后者調用者與服務綁定在一起的。當調用者退出的時候,服務也隨之退出。用于需要與服務交互。

【2016年最新android面試題】相關文章:

最新android面試題及答案11-07

android面試題及答案精選11-12

最新競爭上崗面試題10-01

最新JAVA實現鏈表面試題10-24

最新關于精選php面試題及答案08-07

最新特崗教師面試題及答案參考05-28

最新事業單位面試題及答案05-12

最新招聘社區工作者面試題及答案02-26

德爾福面試題01-11

移動面試題04-01

主站蜘蛛池模板: 赤水市| 乌鲁木齐市| 堆龙德庆县| 阜宁县| 武安市| 明溪县| 大厂| 石林| 固阳县| 永定县| 洛宁县| 庄浪县| 西安市| 安化县| 兖州市| 阿克苏市| 大兴区| 昌江| 景泰县| 沧源| 九寨沟县| 自治县| 饶平县| 无棣县| 宜阳县| 北京市| 九龙坡区| 兖州市| 天气| 兴文县| 龙游县| 文安县| 筠连县| 安新县| 黄平县| 浮梁县| 吕梁市| 宜宾市| 富锦市| 都兰县| 荥阳市|