基於安卓手持設備的手機應用編程——Activity類

coursera上Programming Mobile Applications for Android Handheld Systems: Part 1的課程筆記。

本講的內容爲Activity類介紹。

*概述

Activity類是與用戶交互的基礎類,Activity提供可視化的接口,這樣用戶能夠和應用交互。Activity需要模塊化,每一個Activity能夠支持單一的焦點事件,比如瀏覽郵件信息或者在屏幕中顯示日誌。

通過支持任務回溯概念來管理用戶交互的特定Activity,並保證Activity在任務回溯棧中出入棧時被掛起和重啓。

在Android中,Task是一系列相關Activity的組合,通常當用戶在home界面啓動一個新應用時,一個Task被創建。任務回溯棧則類似調用棧的概念。

Activity生命週期:
當Activity處於Resumed或Running狀態時,它相對用戶可見,用戶可以與之交互。
當Activity處於Paused狀態時,它可以相對用戶可見,但用戶不能與之交互。在此狀態下Activity可能被Android終止。
當處於Stopped狀態時Activity變爲不可見狀態,Android終止Activity直到用戶重新回到這個Activity。

Android提供了一系列方法供調用,爲onCreate,onStart,onResume,onPause,onStop,onDestroy,onRestart。

Android不一定總執行onStop方法,因爲應用進程可能被直接終止。

應用在onStart到onStop之間的週期範圍內可見。


下圖爲常見的Activity生命週期圖。



*Activity生命週期中的方法:
onCreate()
onCreate方法在Activity被首次被創建時調用,主要作用是初始化Activity。
1、調用super.onCreate()
2、設置Activity的內容視圖
3、保持和配置UI視圖

onRestart()
onRestart方法在Activity被停止後又重新啓動時調用。

onStart()方法完成在用戶可見的形式下的行爲。比如在閱讀郵件應用裏的更新未讀信息隊列操作。

onResume()方法,當Activity可見並將開始與用戶交互時調用。如開始動畫或播放背景音樂。

onPause()方法,當Activity即將失去焦點時被調用。在這個方法中可以結束一些前臺行爲如結束動畫。此外用戶編輯的保留狀態信息也在這個方法中保存。

onStop()方法當Activity對用戶不可見時調用。因爲Activity可能重新啓動,這裏可以緩存狀態信息。onStop方法可能不會被調用到,比如當內存不夠時Android直接終止應用進程,所以應將存儲數據的操作放在onPause方法中。

onDestroy()方法調用時間是Activity即將被銷燬時。內容是釋放Activity的資源,如私有線程。



*如何在程序中啓動Activity:
創建一個intent對象來指定要啓動的Activity,然後將其傳遞給startActivity()或startActivityForResult()方法。其中startActivityForResult()方法會得到在被調用Activity中onActivityResult()方法中的值。

Activity.setResult()方法用於設置被調用Activity的返回值。

*更改配置
當設備的配置在運行時改變,Android會終止當前進程,並使用合適的資源重啓它,因此要保證生命週期方法中的代碼高效。
對此,當發生這種改變時,你可以用一個Java對象來保存狀態信息,方法是重寫onRetainNonConfigurationInstance(),這個方法在onStop和onDestroy間被調用,而它返回的對象將在Activity被重建時通過getLastNonConfigurationInstance獲得,但現在這種方法不被提倡;或者,你可以手動處理配置改變,在AndroidManifest.xml文件中聲明常被改變的配置,這樣當配置在運行時改變,Activity會受到對onConfigurationChanged()方法的調用,帶有新配置的Configuration對象會作爲參數傳入。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章