標籤:情況 instance 分析 bundle ble 使用者 ons service 參數
【一】Activity
1.生命週期
onCreate:表示activity正在被建立(此方法中可以做一些初始化工作)
onRestart:表示activity正在被重新啟動,當前activity由不可見變為可見狀態時,會被調用
onStart:表示activity正在被啟動,這時activity已經可見了,但是沒有出現在前台,無法與使用者互動
onResume:表示activity已經可見了,位於前台,可以與使用者互動了
onPause:表示activity正在停止
onstop:
ondestory:
2.異常情況下生命週期分析
activity在異常情況下終止時,系統會調用onSaveInstanceState來保持當前activity的狀態;
activity在重新建立後,系統胡調用onRestoreInstanceState,並且把activity銷毀時所儲存的Bundle對象作為參數同時傳給onCreate和onRestoreInstanceState方法
3.activity的載入模式
standard:預設模式
singleTop:棧頂模式(activity在棧頂就複用,不在就重建) 適應的情境:推送訊息的展示頁
singleTask:棧內複用模式 棧中不會有重複的instance,重用時會幹迴轉上所有的activity 適應的情境:程式的入口,用在啟動頁和首頁
singleInstance:單一實例模式 重新開闢新的任務棧 適應的情境:與程式分離的頁面(類似鬧鐘的提示)
【二】廣播
廣播可以來自系統,還可以來自其他app;
廣播分為有序廣播和無序廣播;
Intent是用來發送廣播的,BroadcastReceiver是來接受廣播的
動態註冊必須等到app啟動後才能收到廣播,靜態註冊可以實現未啟動應用也可以接受廣播;
【三】service
1.資訊清單檔的屬性
exported:代表是否能被其他應用隱式調用
process:是否需要在單獨的進程中運行
enable:是否可以被系統執行個體化
2.如何保證服務不被殺死
因記憶體不足殺死服務:可將onStartCommand方法的傳回值設定為Start_sticky,表示服務在記憶體資源緊張時被殺死後,會在記憶體資源足夠時再恢複;也可以將服務設定為前台服務,擁有較高的比較級,這樣在記憶體資源緊張時也不會被殺掉
使用者手動幹預殺死服務:非強制性關閉服務,會走生命週期,onDestory方法會被調用,可以在此方法中發送廣播,重新啟動(為了程式更健全,我們可開兩個服務,相互監聽,相互啟動,服務A監聽B的廣播來啟動B,服務B監聽A的廣播來啟動A)
android 2018 面試題