Android--面試題整理(一)
1. 什麼是Activity?
四大元件之一,一般的,一個使用者互動介面對應一個activity
setContentView() ,// 要顯示的佈局
, activity 是Context的子類,同時實現了window.callback和keyevent.callback, 可以處理與窗體使用者互動的事件.
button.setOnclickLinstener{
}
我開發常用的的有ListActivity , PreferenceActivity ,TabAcitivty等…
如果介面有共同的特點或者功能的時候,還會自己定義一個BaseActivity.
進度對話方塊的顯示與銷燬 doubanservice
2. 請描述一下Activity 生命週期。
生命週期描述的是一個類 從建立(new出來)到死亡(垃圾回收)的過程中會執行的方法..
在這個過程中 會針對不同的生命階段會呼叫不同的方法
Activity從建立到銷燬有多種狀態,從一種狀態到另一種狀態時會激發相應的回撥方法,這些回撥方法包括:oncreate ondestroy onstop onstart onresume onpause
其實這些方法都是兩兩對應的,onCreate建立與onDestroy銷燬;
onStart可見與onStop不可見;onResume可編輯(即焦點)與onPause;
對話方塊的彈出, Activity.this
對話方塊是activity的一部分.
這6個方法是相對應的,那麼就只剩下一個onRestart方法了,這個方法在什麼時候呼叫呢?
答案就是:在Activity被onStop後,但是沒有被onDestroy,在再次啟動此Activity時就呼叫onRestart(而不再呼叫onCreate)方法;
如果被onDestroy了,則是呼叫onCreate方法。
最後講自己專案中的經驗,比如說豆瓣客戶端每次進入某個介面的時候都要看到最新的資料,這個重新整理列表的操作 就放在onStart()的方法裡面.
fillData() 這樣保證每次使用者看到的資料都是最新的.
多媒體播放, 播放來電話. onStop() 視訊, 視訊聲音設定為0 , 記錄視訊播放的位置 mediaplayer.pause();
onStart() 根據儲存的狀態恢復現場.mediaplayer.start();
在讀文件的時候 還發現 activity還有兩個方法onPostResume() 和 OnPostCreate()這兩個生命週期的方法,不過開發的時候沒有用到過.
3. 兩個Activity之間跳轉時必然會執行的是哪幾個方法。
一般情況比如說有兩個activity,分別叫A,B,當在A裡面啟用B元件的時候, A 會呼叫 onPause()方法,然後B 呼叫onCreate() ,onStart(), OnResume() ,
這個時候B覆蓋了窗體, A會呼叫onStop()方法. 如果B呢是個透明的,或者是對話方塊的樣式, 就不會呼叫onStop()方法
4. 橫豎屏切換時候Activity的生命週期。
這個生命週期跟清單檔案裡的配置有關係
1、不設定Activity的android:configChanges時,切屏會重新呼叫各個生命週期
預設首先銷燬當前activity,然後重新載入
Onpause onstop ondestory oncreate onstart onresume
2、設定Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新呼叫各個生命週期,只會執行onConfigurationChanged方法
遊戲開發中, 螢幕的朝向都是寫死的.
5. 如何將一個Activity設定成視窗的樣式。
可以自定義一個activity的樣式,詳細見手機衛士的程式詳細資訊
android:theme="@style/FloatActivity"
E:\day9\mobilesafe\res\values\style
6. 你後臺的Activity被系統 回收怎麼辦?如果後臺的Activity由於某原因被系統回收可了,如何在被系統回收之前儲存當前狀態?
除了在棧頂的activity,其他的activity都有可能在記憶體不足的時候被系統回收,一個activity越處於棧底,被回收的可能性越大.
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putLong("id",1234567890);
}
public void onCreate(Bundle savedInstanceState) {
//判斷savedInstanceState是不是空.
//如果不為空就取出來
super.onCreate(savedInstanceState);
}
7. 如何退出Activity?如何安全退出已呼叫多個Activity的Application?
退出activity 直接呼叫 finish () 方法 . //使用者點選back鍵 就是退出一個activity
退出activity 會執行 onDestroy()方法 .
1、拋異常強制退出:
該方法通過拋異常,使程式Force Close。
驗證可以,但是,需要解決的問題是,如何使程式結束掉,而不彈出Force Close的視窗。
//安全結束程序 android.os.Process.killProcess(android.os.Process.myPid());
2、記錄開啟的Activity:
每開啟一個Activity,就記錄下來。在需要退出時,關閉每一個Activity即可。
List<Activity>lists ; 在application 全集的環境裡面
lists =new ArrayList<Activity>();
每一個activity在執行oncreate()方法的時候 lists.add(this);
Ondestory() lists.remove(this);
lists.add(activity);
for(Activity activity: lists)
{
activity.finish();
}
3、傳送特定廣播:
在需要結束應用時,傳送一個特定的廣播,每個Activity收到廣播後,關閉即可。
//給某個activity 註冊接受接受廣播的意圖
registerReceiver(receiver,filter)
//如果過接受到的是 關閉activity的廣播 就呼叫finish()方法把當前的activity finish()掉
4、遞迴退出
在開啟新的Activity時使用startActivityForResult,然後自己加標誌,在onActivityResult中處理,遞迴關閉。
404 退出程式
OnActivityResult();
講一講你對activity的理解
把上面的幾點用自己的心得寫出來
8. service是否在main thread中執行,service裡面是否能執行耗時的操作?
預設情況,如果沒有顯示的指定service所執行的程序, Service和activity是執行在當前app所在程序的main thread(UI主執行緒)裡面
service裡面不能執行耗時的操作(網路請求,拷貝資料庫,大檔案 )
在子執行緒中執行 new Thread(){}.start();
特殊情況 ,可以在清單檔案配置 service 執行所在的程序 ,
讓service在另外的程序中執行
<serviceandroid:process="cn.itcast.xxx"></service>
9. 兩個Activity之間怎麼傳遞資料?
基本資料型別可以通過. Intent 傳遞資料
extras.putDouble(key, value)
intent.putExtra(name,value)
// 通過intentputExtra 方法基本資料型別都傳遞
Bundlebundle = new Bundle();
bundle.putShort(key,value);
intent.putExtras(bundle);
intent.putExtras(bundle)
獲取到啟用他的 getIntent();
Intent intent = getIntent();
Bundle bundle= intent.getExtras();
Bundle 類似map的集合
intent.getStringExtra("key","value");
intent.getBooleanExtra("key","value")
Application 全局裡面存放 物件 ,自己去實現自己的application的這個類,基礎系統的application , 每個activity都可以取到
讓物件實現 implements Serializable介面把物件存放到檔案上.
讓類實現Serializable介面,然後可以通過 ObjectOutputStream //物件輸出流
File file = newFile("c:\\1.obj");
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = newObjectOutputStream(fos);
Student stu = newStudent();
stu.setId("10001");
stu.setName("zs");
oos.writeObject(stu);
FileInputStream fis = newFileInputStream(file);
ObjectInputStream ois = newObjectInputStream(fis);
Student stu1 =(Student) ois.readObject();
System.out.println(stu1.getName());
Parcelable 和Serializable
Parcelable 把物件序列化到android作業系統的一塊公用的記憶體空間
檔案/網路
//傳遞資料的引用
intent.setData(Uri)
Uri.fromFile(); //大圖片的傳遞
contentResolver.getInputStream(uri);
10. 怎麼讓在啟動一個Activity是就啟動一個service?
在activity的onCreate()方法裡面 startService();
相關推薦
Android--面試題整理(一)
1. 什麼是Activity? 四大元件之一,一般的,一個使用者互動介面對應一個activity setContentView() ,// 要顯示的佈局 , activity 是Context的子類,同時實現了window.callback和keyevent.callb
Hadoop面試題整理(一)
lucene是支援隨機讀寫的,而hdfs只支援隨機讀。但是HBase可以來補救。HBase提供隨機讀寫,來解決Hadoop不能處理的問題。HBase自底層設計開始即聚焦於各種可伸縮性問題:表可以很“高”,有數十億個資料行;也可以很“寬”,有數百萬個列;水平分割槽並在上千個普通商用機節點上自動複
嵌入式面試題整理(一)
自己整理了一些來自各個公司嵌入式行業的面試的題目。答案在後面(是自己寫的答案,不敢保證100%正確,哈哈,能力有限)。題目都是近兩年的公司面試題 關鍵字volatile有什麼含義?並列舉一個例子。 嵌入式系統總是要使用者變數或暫存器進行位操作。給定一個整變數a,寫兩段
Android面試題整理(源自鴻洋大神公眾號【201803】的一篇BAT面試題推送)
三月,想必各位程式設計師GG 此刻想要的,莫過於一篇面試寶典。鄙人不才,也從未系統的刷過面試題,以鴻洋大哥一篇面試題為引,略加整理,希望能幫到各位不知道看什麼小夥伴。(大部分知識都是有答案的). 原文連結: [https://mp.weixin.qq.com/s/p3l9wr4DX9
java面試題整理(1)
pmap 復制 java對象 試題 取出 樹形 年輕代和老年代 com 足夠 1、Equals與==的區別? ==是判斷兩個變量或者實例是不是指向同一個內存地址 equals是判斷兩個變量或者實例所指向的內存地址中的值是不是相同 2、Object有哪些公用方法?
PHP面試題集錦(一)
day clu 數據庫緩存 優勢 腳本 源代碼 任務 頁面 文件 1、用PHP打印出前一天的時間格式是2017-5-10 22:21:21(2分) Answer: $a = date("Y-m-d H:i:s", strtotime("-1 day")); pr
面試題整理(2)
異常處理 特性 重新 有意 contain catch 類型 長度 all 1.什麽是叠代器? Iterator接口提供了很多對集合進行叠代的方法。每一個集合類都包含了可以返回叠代器實例的叠代方法。 叠代器可以在叠代過程中刪除底層集合的元素,但是不可以直接調用集合的re
面試題18(一):在O(1)時間刪除鏈表結點
else mil ptr font 復雜度 節點 else if 開始 nes // 面試題18(一):在O(1)時間刪除鏈表結點 // 題目:給定單向鏈表的頭指針和一個結點指針,定義一個函數在O(1)時間刪除該 // 結點。鏈表結點與函數的定義如下: // struct
java經典面試題總結(一)
Java經典面試題總結繼續更新,有需要的小夥伴可以路過不要錯過了!看上一篇面試題總結的反響還是很不錯的,就繼續更新了,也非常感謝各位小夥伴的持續關注…… 這次更偏基礎一些! 1、String 和StringBuffer 的區別? 答:JAVA 平臺提供了兩個類:String 和StringBuffer,
面試題總結(一)、TCP協議
宣告:本文主要探討當TCP協議出現在面試筆試場合可能會涉及的問題,每一個知識點討論力求簡潔,便於記憶,但討論深度有限,如要深入研究可點選參考連結,希望對正在找工作的同學有點幫助。 一、TCP協議簡介 一般問到TCP協議的時候 最常見的是TCP連線建立和斷開的過程,也就是三次握手和四次揮手,兩
PAT乙級試題整理(一)——牛客網15分真題整理
牛客網上 共有真題六套,其中每套題有15分題一道,20分題目3道,25分題目1道,共計100分。考試時要求考生在180分鐘內完成。我之前只學過Java和C#,沒有學過C語言,粗淺學習了一下C語言基本語法,想借刷題這個機會好好體會一下面向過程的設計語言的精髓。這裡計劃: 1.先說題
java面試題集錦(一)
第一,談談final, finally, finalize的區別。 最常被問到。 final:可以修飾非抽象類和非抽象類成員方法和變數 final類不能被繼承,沒有子類,final類中的方法預設是final 被宣告為final的變數必須在申明
面試題55(一):二叉樹的深度
一、題目 輸入一棵二叉樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 二、關鍵 三、解釋 四、程式碼 #include <cstdio> #include "..\Utilities\
面試題58(一):翻轉單詞順序(簡單)
一、題目 輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字串"I am a student. ",則輸出"student. a am I"。 二、關鍵 1.反轉兩次。第一次:“.tneduts a ma
面試題57(一):和為s的兩個數字
一、題目 輸入一個遞增排序的陣列和一個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。 二、關鍵 1.兩個指標,一個指向頭一個指向尾,按照規則向中間靠攏。 三、解釋 四、程式碼 #include <cstdio&
【JAVA面試】java面試題整理(1)
java面試題整理(1) JAVA常考點總結1 目錄
【JAVA面試】java面試題整理(2)
java面試題整理(2) JAVA常考點總結2 目錄 1、
【JAVA面試】java面試題整理(3)
java面試題整理(3) JAVA常考點3 目錄 1. 講下JAVA的執行時區域 回答:執行時資料區整體分為兩類 執行緒私有和執行
【JAVA面試】java面試題整理(4)
java面試題整理(4) JAVA常考點4 目錄 Set集合如何保證不重複 弄清怎麼個邏輯達到元素不重複的,原始碼先上
SpringMvc 常見面試題整理(一)
你對springmvc的介紹? 1. Spring 框架提供的構建web應用的模組 2. 它是基於servlet功能實現的,通過實現Servlet介面的DispatcherServlet來封裝其核