標籤:
前序:
3天前,有幸得到師兄賞識,和他一起去幫一間珠海的本地的IT公司擔任面試官,雖說如此,我自己本身就還沒畢業,充其量是去見識下世面罷了。當天共面試了13人,這隻是上午,下午我閃了。在筆試的部分,我設定了一個比較簡單的和常見的 android 頁面跳轉問題,當然要給其他"大佬"先審核。
問題原型:
現有3個頁面,A頁面每次初始化都會請求一次網路資料,A總是採用startActivity(Intent),跳轉到B,B頁面是資料編輯頁面,它擁有3個按鈕,一個點擊總是返回A,一個上傳資料,最後一個點擊跳轉到C頁面,C頁面負責挑選圖片或視頻,C頁面只允許設定一個按鈕。
現需要你在請求網路次數最少的情況下,正確地設定 A->B->C->B->A的跳轉邏輯,及其理由。
收到的N種答案(核心如下),理由省略(沒記住....):
1,A跳到B,B的使用startActivity()跳至C,C在選擇完資料後,點擊按鈕採用startActivity()附帶資料跳回B,B採用startActivity() 跳回A;
這個答案,不用多說,弊端就是A就剛初始化APP的時候就請求了一次網路,在最後的跳轉又被初始化了一次,而且,B也在C跳的時候被多初始化一次,這種就是盲目使用 statryActivity,作者開發經驗較為缺乏。雖然我也是新手,這個還是知道的。
2,A跳到B,B的使用startActivity()跳至C,C在選擇完資料後,點擊按鈕採用startActivity()附帶資料跳回B,B採用finish()跳回A。
死迴圈模式,這種直接pass 掉。
3,A跳到B,B的使用startActivityForResult()跳至C,C在選擇完資料後,點擊按鈕採用finish()附帶資料跳B,B採用finish()回A。
我心中的完美模式。
4,先聲明個全域的static boolean變數。A跳到B,B的使用startActivity()跳至C,C在選擇完資料後,將此全域布爾置為true,點擊按鈕採用finish()跳B,B在onResume 判斷此布爾,有資料則進行對應的控制項操作,否則不操作,回A採用finish()。
這類答案也是可行的,作者對Activity的生命週期比較瞭解,缺點就是犧牲了空間,不可廣用。
.....
結語:
這問題比較基礎,需要一定的實戰開發經驗和對activity 生命週期的瞭解才能答得更好,上述僅是個人觀點。
記錄 android 開發的一個 "面試" 問題