編輯:Android開發教程
Android.app.Activity
Activity是用戶主要也是唯一打交道的途徑。基本上所有的Activity都是和用戶打交道的,你可以通過setContentView(View)來創建一個窗口。Activity常常是以全窗口的模式展示的,當然也有其他的展示方式:浮動窗口(windowIsFloating)或則嵌入到其他Activity(ActivityGroup)。基本上所有子類都會重寫一下兩個方法:
◆ onCreate(Bundle):初始化Activity。這裡常會調用setContentView(int)來加載layout資源來定義你的UI,並且使用findViewById(int)來獲取組件。
◆ onPause():指離開Activity時候觸發的方法。用戶在組件上所做的變更都要提交(通常保存到ContentProvider)
如果有調用Activity.startActivity(),必須在AndroidManifest.xml文件中的<activity>標簽中聲明該Activity。
Activity在整個應用的生命周期中起至關重要的作用。
Activity Lifecycle
系統中的Activity可以通過一個activity棧來進行管理。當一個新的activity啟動的時候,它首先會被放置在activity棧頂部並成為running狀態的activity —— 之前的activity也在activity棧中,但總是被保存在它的下邊,只有當這個新的activity退出以後之前的activity才能重新回到前景界面
所有的activity有四中狀態
◆ 如果activity在屏幕前端(在堆棧棧頂),那麼這個activity是運行的
◆ 如果一個activity失去焦點時仍然可見(指新打開的activity不占用整屏),那麼它的狀態是paused。Paused 的Activity仍然可見(依然保存它的數據和狀態信息,並且仍然由window manager ),但是會在系統處於低內存狀態時候被清除。
◆ 如果一個Activity被其他activity覆蓋時,它將處於stopped狀態。它仍然保留數據和狀態信息,但是它對於用戶是不可見的。但是它會在系統其他地方需要內存的時候被殺掉
◆ 如果一個Activity處於paused或則stopped狀態時,系統可以通過關閉或則殺掉進程的方式來釋放它占用的內存。當再次需要它的時候,系統會重新啟動並加載之前的狀態。
下圖是Activity的主要狀態圖:
對於你的activity,有三個點比較關鍵:
◆ Activity的整個生命周期從onCreate(Bundle)到onDestory().activity會在onCreate()時候創建所有的全局狀態並且會在onDestory()時候釋放這些資源。比如如果需要一個Thread在後台下載網絡上的資源,那麼需要在onCreate(Bundle)時候創建它並且在onDestory()時候釋放它。
◆ Activity可見生命周期從onStart()到onStop().這個時間我們可以在屏幕上看到這些組件,盡管可能這個組件不在最前端。這兩個方法之間可以調用一些展示給用戶看的資源。比如可以在onStart()是創建一個BroadcastReceiver來接收對用戶界面有影響的信息,在onStop()時候關閉它,那麼在每次調用onStart()和onStop()時候都會穿件這個BroadcastReceiver。
◆ Activity的前景生命周期從onResume()到onPause()之間。這期間Activity處於和用戶交互階段。Activity會不斷的在resume和pause狀態之間切換:設備進入睡眠、activity需要的結果已傳遞過來了或則新的intent到達時。所以這兩個方法應該是輕量級的。
Activity在整個生命周期中定義了以下方法,這些方法是以hook的形式定義的,你可以在子類中重寫他們,一般來說子類都要覆蓋onCreate(Bundle)來初始化一些數據而重寫onPause()來提交用戶的數據。一般會在最後調用父類的構造函數
在介紹數據綁定時,我們使用了系統自帶的SimpleAdapter。Android 允許自定義Adapter ,理論上可以使用任意的View (Layout)來顯示數據。下
Android操作系統本身就是一個巨大的開源軟件倉庫,熟悉它既可以了解到Android系統的設計框架,也可以獲得高效的應用程序編寫方式。本文所分析的源碼來自於Google
上下文相關菜單(Context Menu)類同PC上按鼠標右鍵顯示的菜單,在Android平台上是長按來激活Context Menu,Context Menu一般用來顯示
除了“對話框”進度條,也可以創建一個顯示“操作進度”的對話框,例如顯示正在下載的狀態。1. 創建一個工程:Dialog。2