Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 第12天 Android Activity學習 1

第12天 Android Activity學習 1

編輯:關於Android編程



Activity通常是學習Android寫demo時遇到的第一個類,知名程度可以與經典的打印“Hello World”相媲美,畢竟在Android中即使想在界面上顯示一個“Hello World”,也必須先創建Activiy子類在其onCreate方法中創建視圖,在視圖上添加文字“Hello World”。哈哈,接下來就來看看Android 的四大組件使用頻率最高的Activity吧。

一、Activity是什麼?

首先會提出一個問題,Activity到底是什麼? 如果回答Activity四大組件之一也是使用頻率最高的組件,這個答案顯然令人不滿意,那Activiyt到底是什麼呢?來看看官方的解釋:
Activity是與Android app提供交互的重要組件。Activity負責創建一個窗口,在這個窗口基礎上開發者可以通過setContentView添加UI,Activity默認全屏顯示也可以作為浮動窗口顯示。 Activity存在的目的是為了降低耦合,把用戶自定義與系統調用分離開。
例如Activity提供如下處理: 控制窗口層級與顯示關系(例如當前頁面有多個彈出窗口,多個Toast每個Dialog與Toat都是新的窗口) 在窗口中按照創建setContentView傳遞View對象創建界面。 在窗口與視圖上處理觸摸事件、硬鍵盤事件、滾輪事件。 在當前視圖進行繪制、響應窗口所有事件。 控制輸入法在當前窗口的顯示與隱藏。 Activity是UI嗎? 按我的理解不是,這個問題引出另外一個概念UI (User Interface),如果把UI粗淺的理解話搞美術的人畫出來的美術作品的話,Activity相當於畫架主要是對畫出作品時起到支撐作用,但是並不能說畫架就是畫作本身。

二、Activity的生命周期

通過以下的文章與圖片可以了解Activity生命周期具體有哪些,並且每一個的含義是什麼,但是還是會發現有兩個疑問:
疑問一: 為什麼要有生命周期呢?而且為什麼生命周期還要提供這麼多方法呢?Android Framework層本身本身就是基於Java的難道不能只提供一個入口,例如mian函數嗎? 答案是Android可以提供周期回調,可以僅提供一個入口其實進把onCreate當做入口就行了,那為什麼要提供生命周期這麼多回調呢?按我的理解是因為提高性能對現有的對象進行復用。 Android完全可以僅提供一個接口創建,如果當前Activity處於被遮蓋的情況直接把當前Activty給殺死清理掉,但是這樣會導致用戶再點擊回退按鈕想看到之前的Acitivyt展示的頁面上時,因為被遮蓋時給清理掉所以要重新創建,這樣消耗資源倒是小事,主要是這個過程肯定要消耗時間,而且這段時間用戶也只能等待帶來用戶體驗不好。
疑問二: Dialog的顯示與隱藏會執行Activity的哪些回調方法? 按照對Activity生命周期的理解,當Activty界面被部分遮蓋的時候會執行onPause,遮蓋消失時會執行onResume,但是如果寫個Demo並在相應周期方法中打印log會發現Dialog的顯示與隱藏不會觸發任何的生命周期方法。 從現象說明了對遮蓋觸發Activiyt周明周期理解有誤,Dialog雖然會遮蓋不會觸發生命周期方法。但是有些文章中給出的效果圖中能看到僅僅一個Dialog浮現在手機屏幕中間,但是onPause與onResume也執行了。這是因為遮蓋的Dialog形狀的界面其實是Activity 其style格式設置為theme.Dialog,即Activity以Dialog形式僅占據屏幕的中間位置顯示並不占滿全屏。新的Activity的遮蓋當前Activity當然會觸發onPause與onResume。

兩分鐘徹底讓你明白Android Activity生命周期(圖文)! http://blog.csdn.net/android_tutor/article/details/5772285

Managing the Activity Lifecycle
http://developer.android.com/training/basics/activity-lifecycle/index.html

Starting an Activity
http://developer.android.com/training/basics/activity-lifecycle/starting.html

Pausing and Resuming an Activity
http://developer.android.com/training/basics/activity-lifecycle/pausing.html

Stopping and Restarting an Activity
http://developer.android.com/training/basics/activity-lifecycle/stopping.html

Recreating an Activity
http://developer.android.com/training/basics/activity-lifecycle/recreating.html



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved