Android常见面试题(一)
ANDROID(一)
Activity
1.什么是Activity? 請描述一下生命周期
Activity:
一個Activity是一個應用程序組件,提供一個屏幕,用戶可以用來交互為了完成某項任務,例如撥號、拍照、發送email、看地圖。每一個activity被給予一個窗口,在上面可以繪制用戶接口。窗口通常充滿屏幕,但也可以小于屏幕而浮于其它窗口之上
一個程序一般由多個Activity組成,各activities之間關系很松散,它們之間沒有直接的關聯。必須有一個activity被指定為Main activity,它是程序啟動時首先顯示的界面。每個activity都可以隨意啟動其它的activity。每當一個activity被啟動,則前一個activity就被停止。一個程序中的所有啟動的activity都被放在一個棧中,所以被停止的activity并沒有銷毀,而在存于棧中。新啟動的activity先被存放于棧中,然后獲得輸入焦點。在當前活動的activity上點返回鍵,它被從棧中取出,然后銷毀,然后上一個activity被恢復。當一個activity因為新的activity啟動而被停止時,它會收到狀態變化的通知,這樣的變化有多個,每個都會引起系統調用一個相應的回調方法以通知activity,這些回調方法被統稱為“生命周期回調方法”。這些回調方法分別在Activity被創建、停止、恢復、銷毀時被調用。
生命周期:
在 android 中,Activity 擁有四種基本狀態:
當一個 Activity 實例被創建、銷毀或者啟動另外一個 Activity 時,它在這四種狀態之間進行轉換,這種轉換的發生依賴于用戶程序的動作。下圖說明了 Activity 在不同狀態間轉換的時機和條件:
圖 1. Activity 的狀態轉換
圖 3. 這些方法的調用時機
?
共有七個周期函數:?
void onCreate(Bundle savedInstanceState)?
void onStart()?
void onRestart()?
void onResume()?
void onPause()?
void onStop()?
void onDestroy()?
在Activity顯示的過程中會依次調用OnCreate、onStart和OnResume,在Activity銷毀的過程中,會依次調用onPause、onStop和onDestroy.在執行onStop過程中Activity重新獲得了焦點,系統會調用
onRestart方法,之后調用onStart和onResume方法
1.完整生命周期:???? 即一個activity從出現到消失,對應的周期方法是從onCreate到onDestroy?
2.可見生命周期:???? 從onStart()到onStop()方法,在這個周期中,用戶可以看見Activity,但不一定能夠與之交互,這兩個方法可以隨著狀態的變化被執行多次。?
3.前景生命周期:????? 從onResume()到onPause()方法,在這個周期中,Activity處在其它Activity之前,即在Activity棧的最頂端,負責與用戶進行交互,伴隨著狀態的變化,這兩個方法可以被執行多次
?
2.Activity調用的幾種方法
顯示啟動Activity
顯示啟動activity
Intent intent = new Intent(this,MyActivity.class);
startActivity(intent);
啟動一個activity并獲取結果
startActivityForResult();
(回來時調用onActivityResult())
隱式啟動Activity
指定Activity Action:
例如,你想讓用戶發送一個電子郵件,你可以創建以下的Intent:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
startActivity(intent);
關閉Activity
? ? ?Activity可以內部調用finish()方法關閉它自己,也可以調用finishActivity()方法關閉其它的activity、
3.在Activity之間如何傳遞數據
四種方法:
Intent對象
例如:Intent intent = new Intent(this,MyActivity.class);
intent.putExtra("intent_int",300);
startActivity(intent);
獲取:
int demo = getIntent().getExtras().getInt("intent_int");
靜態變量
將類的成員定義成public static
剪切板
不過只能傳文本數據以及Intent對象支持的數據
全局對象
可以為應用程序定義一個全局變量,繼承application
4.兩個Activity之間跳轉時必然會執行的是哪幾個方法
onCreate():在activity生命周期開始時調用
onRestoreInstanceState():用來恢復UI狀態
onRestart():當activity重新啟動時調用
onStart():當activity對用戶即將可見時調用
onResume():當activity與用戶交互時,繪制界面
onSaveInstanceState():當activity即將移除棧頂保留UI狀態時被調用
onPause():暫停當前活動的activity,提交持久數據的改變,停止動畫和其他占用CPu資源的東西,由于下一個activity在這個方法返回之前不會resume,所以這個方法的代碼執行要快
onStop():activity不再可見時調用
onDestroy():在activity銷毀棧時被調用的最后一個方法
5.橫豎屏幕切換時候activity的生命周期
①不設置activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,且豎屏時會執行兩次
②設置activity的android:configChanges=”orientation"時,切屏還是會調用各個生命周期,切橫屏,豎屏時只會執行一次
③設置activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法
6.你后臺的Activity被系統回收怎么辦?
系統會幫我們記錄下回收之前Activity的狀態,再次調用被回收的Activity就要重新調用onCreate()方法,不同于直接啟動的是這回onCreate()里面帶上參數savedInstanceState,savedInstanceState是一個Bundle對象,基本上可以把它理解為系統幫你維護的一個map對象,使用它可以恢復到回收前的狀態
7.如何將一個activity設置為窗口的樣式
①在你的style.xml文件中可以新建一如下的類似Dialog的style:
<style name="Theme.FloatActivity" parent="android:style/Theme.Dialog></style>
②在AndroidManifest.xml中在你需要顯示為窗口的activity中添加如下屬性:
android:theme="@style/Theme.FloatActivity"即可
也可以直接添加對應需要展示為Dialog style的activity的android:theme屬性值為:android:theme="@android:style/Theme.Dialog"
?
轉載于:https://www.cnblogs.com/daimingming/p/3352425.html
總結
以上是生活随笔為你收集整理的Android常见面试题(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20131003国庆作业例4-4,4-5
- 下一篇: Linux系统监控工具