Android之路-------Activity的詳解,androidactivity

來源:互聯網
上載者:User

Android之路-------Activity的詳解,androidactivity
前言

  由於接近放假,公司在趕項目所以前段LP比較忙,沒什麼時間總結和寫部落格,只是準備睡覺的時候看看書,每天看的不算多,大概10多頁左右吧,不過每天堅持如此的話那也是一個龐大的數字。

  今天LP的任務完成了,在領導還沒分配任務之前再發布一篇關於Activity的博文..........

  上一篇跟大家分享了Android的發展史、系統架構、還有Android的四大組件,下面LP就為大家介紹下四大組件之一的Activity。

  知道了Android的曆史之後,有沒有讓Android那種打不死的精神打動了,如果有的話就趕緊動身來學Android吧..

  行了,廢話不多說     Let's go

目錄
  • 活動(Activity)
  • activity誰來管?
  • 它是怎麼個生老病死的?
  • 啟動模式
  • 如何去使用它?
  • 兄弟間該如何進行互動?
Android四大組件之一【Activity】

  說到活動相信就算沒有android基礎的人都知道活動是個什麼東西,因為它會經常出現在我們的身邊,但是說到Activity,那就不一定了,不過懂一點英語的人直接翻譯過來也知道是活動的意思,其實Android的活動和現實生活中的活動很相似,也可以理解為現實生活中的活動,我們正式開始吧。

  說到Android的Activity,它到底是個什麼東西呢? 它就是Android系統中的一個組件,專門負責與使用者互動的,使用者看到的每一個介面就是一個活動。

  在Android中,Activity有基本的四種狀態

    1.運行狀態  active/running

        處於螢幕的最前端或者正在和使用者互動著,稱為運行狀態/啟用狀態

    2.暫停狀態  Paused

        當前activity失去焦點,被一個視窗或者非全屏的東西遮住一點點和被另一個透明的activity覆蓋的時候,稱為暫停狀態

    3.停止狀態  Stoped

        當前activity完全看不到了,稱為停止狀態

    4.殺死狀態  Killed

        當activity處於“暫停狀態” Or “停止狀態”,這時候系統就可以對當前的activity從記憶體中刪除或者終止它的進程,還有就是當系統記憶體不足的時候也會執行前者動作。

看電影

如果看完上面的還不能理解,那麼你就可以理解為看電影,那部電影就是當前的activity. 

    1.電影現正播放的時候,稱為運行狀態

    2.當我們點擊暫停按鈕的時候,螢幕不是變暗了嗎?或者出現一個小廣告,這個就可以理解為被另一個全屏透明的東西遮住和非全屏的小廣告,這個就是暫停狀態了

    3.看港劇看多了,不想看了,就換部日本動作片來看,這時港劇不是看不到了嗎?或者電腦直接黑屏了,反正看不到港劇,也就是當前的activity。這些都可以稱為 停止狀態

    4.就是不想看電影了,直接手動把播放器關掉,處於暫停或者停止狀態,記憶體不足的時候系統會自動關掉播放器

還不明白話,先不用鑽牛角尖,先往下看,往後會慢慢的明白的.........

Activity該誰來管?

activity是由棧來管理的,先進後出,後進先出。每一個使用者能看到的activity都是處於棧頂的,當記憶體不足的時候,棧裡面最底下的那個activity就會被回收,直接最明了

 它又是怎麼個生老病死的呢?(生命週期)

  這個我就不多說了,直接開始.. 

  官方生命週期圖,LP動了點手腳:

  

圖看完了,緊接著是代碼:

1 package com.leo.writeblog; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.util.Log; 6 7 public class MainActivity extends Activity { 8 private final String TAG = "MainActivity"; 9 @Override10 protected void onCreate(Bundle savedInstanceState) {11 super.onCreate(savedInstanceState);12 setContentView(R.layout.activity_main);13 }14 @Override15 protected void onStart() {16 super.onStart();17 Log.i(TAG, "onStart");18 }19 @Override20 protected void onResume() {21 super.onResume();22 Log.i(TAG, "onResume");23 }24 @Override25 protected void onRestart() {26 super.onRestart();27 Log.i(TAG, "onRestart");28 }29 @Override30 protected void onPause() {31 super.onPause();32 Log.i(TAG, "onPause");33 }34 @Override35 protected void onStop() {36 super.onStop();37 Log.i(TAG, "onStop");38 }39 @Override40 protected void onDestroy() {41 super.onDestroy();42 Log.i(TAG, "onDestroy");43 }44 }View Code

 首次啟動並執行日誌如下:

按返回鍵退出的時候日誌如下:

按小房子鍵的時候日誌如下:

從新返回應用程式的時候日誌如下:

還有就是當activity還可見的時候,也就是彈出小視窗,或者透明的activity的時候,只會執行   onPause方法,當activity再次獲得焦點後就執行onResume

onCreate:activity第一次啟動並執行時候才調用,而且只調用一次

onRestart:activity不可見後恢複可見時調用

onStart:activity可見的時候調用

onStop:activity不可見的時候調用

onResume:activity擷取焦點時調用

onPause:activitiy失去焦點時調用

onDestroy:activity銷毀時調用

啟動模式

說到啟動模式,它一共有四種,分別是standard、singleTop、singleTask、singleInstance,可以在AndroidManifest.xml檔案中通過<activity>標籤中的android:launchMode屬性來選擇啟動模式。

standard:

    這種模式是標準啟動模式,也是預設的啟動模式,在不進行顯式指定的情況下,所有活動都會自動使用這種模式

singleTop

    當啟動模式為singleTop時,在啟動活動的時候如果發現返回棧的站定已經是該活動,那麼就直接使用,不必再建立

singleTask

    當啟動模式為singleTask的時候,每次啟動活動都會在返回棧中檢查是否存在該活動,如果存在,並發活動之上的活動統統出棧,否則就建立一個

singleInstance

    啟動模式 為singleInstance,這時會單獨建立一個返回棧來管理這個活動,這樣可以達到程式與程式之間共用活動

該如何去使用它?

我們在建立activity的時候必須繼承Android內建的Activity,在使用時必須要在AndroidManifest.xml檔案中註冊,如下:

它們兄弟之間是怎麼交流的呢?

是通過意圖(Intent)進行通訊,資料轉送,開啟活動

什麼是意圖呢?

其實它就像我們生活中的快遞員,負責幫我們送東西,Android系統裡的意圖就是上演著這個角色...

它可以與不同程式的活動交流,也可以啟動不在同一個程式中的活動......等等一些,這裡我就不做多介紹了,需要往下瞭解的可以到網上查下資料

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.