網上高級工程師面試相關文章魚龍混雜,要麼一堆內容,要麼內容質量太淺, 鑑於此我整理了以下安卓開發高級工程師面試題以及答案幫助你們順利進階,下面進入正題:android
Activity A 的onPause() → Activity B的onCreate() → onStart() → onResume() → Activity A的onStop();若是B是透明主題又或則是個DialogActivity,則不會回調A的onStop;git
lateinit var textView: TextView var gameState: String? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) gameState = savedInstanceState?.getString(GAME_STATE_KEY) setContentView(R.layout.activity_main) textView = findViewById(R.id.text_view) } override fun onRestoreInstanceState(savedInstanceState: Bundle?) { textView.text = savedInstanceState?.getString(TEXT_VIEW_KEY) } override fun onSaveInstanceState(outState: Bundle?) { outState?.run { putString(GAME_STATE_KEY, gameState) putString(TEXT_VIEW_KEY, textView.text.toString()) } super.onSaveInstanceState(outState) }
通常來講,調用onPause()和onStop()方法後的Activity實例仍然存在於內存中,Activity的全部信息和狀態數據不會消失,當Activity從新回到前臺後,全部的改變都會獲得保留。github
可是當系統內存不足時,調用onPause()和onStop()方法後的Activity可能會被系統摧毀,此時內存中就不會存有該Activity的實例對象了。若是以後這個Activity從新回到前臺,以前所作的改變就會消失,爲避免此種狀況的發生,咱們能夠複寫onSaveIntanceState()方法。onSaveInatanceState()方法接受一個Bundle類型的參數,開發者能夠將狀態數據存儲到這個Bundle對象中。若是滴啊用onSaveInstanceState()方法,調用將發生在onPause()或onStop()方法以前。面試
Activity 的狀態一般狀況下系統會自動保存的,只有當咱們須要保存額外的數據時才須要使用到這樣的功能。數據庫
通常來講, 調用 onPause()和 onStop()方法後的 activity 實例仍然存在於內存中, activity的全部信息和狀態數據不會消失, 當 activity 從新回到前臺以後, 全部的改變都會獲得保留。安全
可是當系統內存不足時, 調用 onPause()和 onStop()方法後的 activity 可能會被系統摧毀, 此時內存中就不會存有該activity 的實例對象了。若是以後這個 activity 從新回到前臺, 以前所做的改變就會消失。爲了不此種狀況的發生 ,咱們能夠覆寫 onSaveInstanceState() 方法。onSaveInstanceState()方法接受一個 Bundle類型的參數, 開發者能夠將狀態數據存儲到這個Bundle對象中, 這樣即便activity被系統摧毀,當用戶從新啓動這個activity而調用它的onCreate()方法時, 上述的 Bundle 對象會做爲實參傳遞給onCreate()方法, 開發者能夠從 Bundle 對象中取出保存的數據, 而後利用這些數據將 activity恢復到被摧毀以前的狀態。性能優化
須要注意的是, onSaveInstanceState()方法並非必定會被調用的, 由於有些場景是不須要保存狀態數據的. 好比用戶按下 BACK 鍵退出 activity 時, 用戶顯然想要關閉這個 activity, 此時是沒有必要保存數據以供下次恢復的, 也就是 onSaveInstanceState() 方法不會被調用. 若是調用onSaveInstanceState()方法, 調用將發生在 onPause()或 onStop()方法以前。服務器
@Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); }
........網絡
面試題解析內容所有免費分享, 有須要完整版的小夥伴【點擊我】免費獲取哦!
默認狀況,若是沒有顯示的指servic所運行的進程, Service和activity是運行在當前app所在進程的main thread(UI主線程)裏面。數據結構
service裏面不能執行耗時的操做(網絡請求,拷貝數據庫,大文件 )
特殊狀況 ,能夠在清單文件配置 service 執行所在的進程 ,讓service在另外的進程中執行。
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" > </service>
Activity經過bindService(Intent service, ServiceConnection conn, int flags)跟Service進行綁定,當綁定成功的時候Service會將代理對象經過回調的形式傳給conn,這樣咱們就拿到了Service提供的服務代理對象。
在Activity中能夠經過startService和bindService方法啓動Service。通常狀況下若是想獲取Service的服務對象那麼確定須要經過bindService()方法,好比音樂播放器,第三方支付等。若是僅僅只是爲了開啓一個後臺任務那麼可使用startService()方法。
他們都是Android開發中使用頻率最高的類。其中Activity和Service都是Android四大組件之一。他倆都是Context類的子類ContextWrapper的子類,所以他倆能夠算是兄弟關係吧。不過兄弟倆各有各自的本領,Activity負責用戶界面的顯示和交互,Service負責後臺任務的處理。Activity和Service之間能夠經過Intent傳遞數據,所以能夠把Intent看做是通訊使者。
......
面試題解析內容所有免費分享, 有須要完整版的小夥伴【點擊我】免費獲取哦!
當convertView爲空時,用setTag()方法爲每一個View綁定一個存放控件的ViewHolder對象。當convertView不爲空,重複利用已經建立的view的時候,使用getTag()方法獲取綁定的ViewHolder對象,這樣就避免了findViewById對控件的層層查詢,而是快速定位到控件。
① 複用ConvertView,使用歷史的view,提高效率200%
② 自定義靜態類ViewHolder,減小findViewById的次數。提高效率50%
③ 異步加載數據,分頁加載數據。
④ 使用WeakRefrence引用ImageView對象。
① 設置ListView的滾動監聽器:setOnScrollListener(new OnScrollListener{….})
在監聽器中有兩個方法: 滾動狀態發生變化的方法(onScrollStateChanged)和listView被滾動時調用的方法(onScroll)
② 在滾動狀態發生改變的方法中,有三種狀態:
手指按下移動的狀態:SCROLL_STATE_TOUCH_SCROLL: // 觸摸滑動
慣性滾動(滑翔(flgin)狀態):SCROLL_STATE_FLING: // 滑翔
靜止狀態: SCROLL_STATE_IDLE: // 靜止
對不一樣的狀態進行處理:
分批加載數據,只關心靜止狀態:關心最後一個可見的條目,若是最後一個可見條目就是數據適配器(集合)裏的最後一個,此時可加載更多的數據。在每次加載的時候,計算出滾動的數量,當滾動的數量大於等於總數量的時候,能夠提示用戶無更多數據了。
這個固然能夠的,ListView顯示的每一個條目都是經過baseAdapter的getView(int position, View convertView, ViewGroup parent)來展現的,理論上咱們徹底可讓每一個條目都是不一樣類型的view。
好比:從服務器拿回一個標識爲id=1,那麼當id=1的時候,咱們就加載類型一的條目,當id=2的時候,加載類型二的條目。常見佈局在資訊類客戶端中能夠常常看到。
除此以外adapter還提供了getViewTypeCount()和getItemViewType(int position)兩個方法。在getView方法中咱們能夠根據不一樣的viewtype加載不一樣的佈局文件。
......
......
......
面試題解析內容所有免費分享, 有須要完整版的小夥伴【點擊我】免費獲取哦!
......
面試是跳槽漲薪最直接有效的方式,如今能夠開始準備明年春季的面試了,各位作好面試造飛機,工做擰螺絲的準備了嗎?
掌握了這些知識點,面試時在候選人中又能夠奪目很多,暴擊9999點。機會都是留給有準備的人,只有充足的準備,纔可能讓本身能夠在候選人中脫穎而出。
如下是全部面試題資料截圖:
面試題解析內容所有免費分享, 有須要完整版的小夥伴【點擊我】免費獲取哦!