日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[转载]android一些、面试题

發布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转载]android一些、面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文地址:android一些、面試題作者:維的咩咩

1.??? 請描述下Activity的生命周期。

?????必調用的三個方法:onCreate() --> onStart() --> onResume(),用AAA表示

(1)父Activity啟動子Activity,子Actvity退出,父Activity調用順序如下
AAA --> onFreeze() --> onPause() --> onStop() --> onRestart() --> onStart(),onResume() …
(2)用戶點擊Home,Actvity調用順序如下
AAA --> onFreeze() --> onPause() --> onStop() -- Maybe --> onDestroy() – Maybe
(3)調用finish(), Activity調用順序如下
AAA --> onPause() --> onStop() --> onDestroy()
(4)在Activity上顯示dialog, Activity調用順序如下
AAA
(5)在父Activity上顯示透明的或非全屏的activity,Activity調用順序如下
AAA --> onFreeze() --> onPause()
(6)設備進入睡眠狀態,Activity調用順序如下
AAA --> onFreeze() --> onPause()

2.??? 如果后臺的Activity由于某原因被系統回收了,如何在被系統回收之前保存當前狀態?

????? onSaveInstanceState()

????? 當你的程序中某一個Activity A在運行時,主動或被動地運行另一個新的Activity B,這個時候A會執行onSaveInstanceState()。B完成以后又會來找A,這個時候就有兩種情況:一是A被回收,二是A沒有被回收,被回收的A就要重新調用onCreate()方法,不同于直接啟動的是這回onCreate()里是帶上了參數savedInstanceState;而沒被收回的就直接執行onResume(),跳過onCreate()了。?

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

????? 在AndroidManifest.xml 中定義Activity的地方一句話android:theme="@android:style/Theme.Dialog"或android:theme="@android:style/Theme.Translucent"就變成半透明的

4.??? 如何退出Activity?如何安全退出已調用多個Activity的Application?

對于單一Activity的應用來說,退出很簡單,直接finish()即可。

當然,也可以用killProcess()和System.exit()這樣的方法。

http://blog.csdn.net/debug2/archive/2011/02/18/6193644.aspx

1、拋異常強制退出:

該方法通過拋異常,使程序Force Close。

驗證可以,但是,需要解決的問題是,如何使程序結束掉,而不彈出Force Close的窗口。

2、記錄打開的Activity:

每打開一個Activity,就記錄下來。在需要退出時,關閉每一個Activity即可。

3、發送特定廣播:

在需要結束應用時,發送一個特定的廣播,每個Activity收到廣播后,關閉即可。

4、遞歸退出

在打開新的Activity時使用startActivityForResult,然后自己加標志,在onActivityResult中處理,遞歸關閉。

除了第一個,都是想辦法把每一個Activity都結束掉,間接達到目的。

但是這樣做同樣不完美。

你會發現,如果自己的應用程序對每一個Activity都設置了nosensor,在兩個Activity結束的間隙,sensor可能有效了。

但至少,我們的目的達到了,而且沒有影響用戶使用。

為了編程方便,最好定義一個Activity基類,處理這些共通問題。

5.??? 請介紹下Android中常用的五種布局。

FrameLayout(框架布局),LinearLayout (線性布局),AbsoluteLayout(絕對布局),RelativeLayout(相對布局),TableLayout(表格布局)

6.??? 請介紹下Android的數據存儲方式。

Android提供了4種方式存儲數據:

--使用SharedPreferences存儲數據;------------------解析的XML文件用來存儲。

--文件存儲數據;----------------------輸入輸出流

--SQLite數據庫存儲數據;

--使用ContentProvider存儲數據;--------------可以存儲在SQLite里面,也可以存儲在內容解析器(Android自帶的一個解析類)里面。

7.??? 請介紹下ContentProvider是如何實現數據共享的。

創建一個屬于你自己的Content provider或者將你的數據添加到一個已經存在的Content provider中,前提是有相同數據類型并且有寫入Content provider的權限。

8.??? 如何啟用Service,如何停用Service。

服務類繼承自service清單文件中注冊 enabled屬性設為true

開始一個服務使用startservice方法,停止一個服務使用stopservice方法

9.??? 注冊廣播有幾種方式,這些方式有何優缺點?請談談Android引入廣播機制的用意。

引入廣播機制可以方便幾大組件的信息和數據交互。

b:程序間互通消息(例如在自己的應用程序內監聽系統來電)

c:效率上(參考UDP的廣播協議在局域網的方便性)

d:設計模式上(反轉控制的一種應用,類似監聽者模式)

?

10.??? 請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關系。

android提供了 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。

?

11.??? AIDL的全稱是什么?如何工作?能處理哪些類型的數據?

Android Interface Define Language見aidl的筆記

12.??? 請解釋下Android程序運行時權限與文件系統權限的區別。

?

?

13.??? 系統上安裝了多種瀏覽器,能否指定某瀏覽器訪問指定頁面?請說明原由。

14.???有一個一維整型數組int[]data保存的是一張寬為width,高為height的圖片像素值信息。請寫一個算法,將該圖片所有的白色不透明(0xffffffff)像素點的透明度調整為50%。

15.??? 你如何評價Android系統?優缺點。

5、一條最長的短信息約占多少byte?

中文70(包括標點),英文160,160個字節。

?

ANR:Application Not Responding,五秒。把耗時量大的任務放到新建的子線程中。使用這種方法涉及你的應用程序,能夠保證你的程序對輸入保持良好的響應,從而避免因為輸入事件超過5秒鐘不被處理而產生的ANR。

16.Intentservice的 好處Activity的進程,當處理intent的時候,會產生一個對應的Service

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

?

?

17.android中線程的處理方法

每當一個程序第一次啟動時候都會啟動一個main thread 該線程主要處理與UI相關的事件,比如按鍵事件。

子線程和ui的更新通過 handler處理msg消息隊列使用sendmessage方法或者post方法post方法發送的是一個runnable對象。

Looper是每條線程里的message queue的管家。因為子線程里沒有mq所以調用looper里的getMainlooper方法這樣得到的主線程的looper不為null。

Looper。Loop方法運行開始后,循環的按照接受順序取出非空的mq

當sendmessage方法執行時 該函數設置了那個msg對象的target屬性是當前的hander對象

隨后looper取出了那個msg則調用該msg的target只想的handler的dispatchMessage方法

在該方法里用戶指定三個判斷優先級由高到低

1)? meg里面的callback方法實現了一個runnable接口run函數做處理工作

2)? handler里面的mcallback指向的一個實現了callback接口的對象由handlemessage處理

3)? 處理消息handler對象對應的類繼承并且實現了其中handlemessage函數通過這個實現的handleMessage函數處理消息

最后handler處理完message對象之后looper設置該msg對象為null以便回收

主線程和子線程如何交互最終誰來處理信息?

判斷handler對象里面的looper對象屬于哪條線程的則由該線程執行

1)? 當handler對象的構造函數為空時,說明looper是主線程的

?

?

18.GBK? GB2312? UTF8之間的區別

UTF8它對英文使用8位(即一個字節),中文使用24為(三個字節)來編碼

GBK的文字編碼是用雙字節來表示的,即不論中、英文字符均使用雙字節來表示

GB2312和GBK是一樣的

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

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

?

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

?

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

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

一個service不包含可見的用戶界面,可以在后臺無限運行。可以連接到一個正在運行的服務中,連接后可以通過服務中的接口對其通信

一個broadcast receiver 是一個接收廣播消息并做出回應的組件。廣播接收者沒有界面

一個intent是一個intent對象,他保存了消息的內容。對于activity和service來說,它指定了請求的操作名稱和待操作數據的URI。Intent對象可以顯式的指定一個目標組件。如果這樣的話,android會找到這個component(基于manifest文件中的聲明)并激活它。但如果一個目標不是顯式指定的,android必須找到響應intent的最佳component。是通過將Intent對象和目標的intent filter相比較來完成這一工作的。一個component的intent filter告訴android該component能處理的intent。intent filter也是在manifest文件中聲明的.

?

?onPause,onstop, onDestroy,三種狀態 下 activity都有可能被系統干掉

為了保證程序的正確性,你要在onPause()里寫上持久層操作的代碼,將用戶編輯的內容都保存到存儲介質上(一般都是數據庫 )。實際工作中因為生命周期的變化而帶來的問題也很多,比如你的應用程序起了新的線程在跑,這時候中斷了,你還要去維護那個線程,是暫停還是殺掉還是數據回滾,是吧?因為Activity可能被殺掉,所以線程中使用的變量和一些界面元素就千萬要注意了,一般我都是采用Android的消息機制 [Handler,Message]來處理多線程和界面交互的問題。這個我后面會講一些,最近因為這些東西頭已經很大了,等我理清思緒再跟大家分享。

?

轉載于:https://www.cnblogs.com/liuzhuqing/archive/2012/07/03/7480801.html

總結

以上是生活随笔為你收集整理的[转载]android一些、面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。