Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android之路-------Activity的詳解

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

編輯:關於Android編程

前言

  由於接近放假,公司在趕項目所以前段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就會被回收,直接上圖最明了

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316102015.png

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

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

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

  data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316102056.png

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

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316102084.gifdata-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316102080.gif
 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     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13     }
14     @Override
15     protected void onStart() {
16         super.onStart();
17         Log.i(TAG, onStart);
18     }
19     @Override
20     protected void onResume() {
21         super.onResume();
22         Log.i(TAG, onResume);
23     }
24     @Override
25     protected void onRestart() {
26         super.onRestart();
27         Log.i(TAG, onRestart);
28     }
29     @Override
30     protected void onPause() {
31         super.onPause();
32         Log.i(TAG, onPause);
33     }
34     @Override
35     protected void onStop() {
36         super.onStop();
37         Log.i(TAG, onStop);
38     }
39     @Override
40     protected void onDestroy() {
41         super.onDestroy();
42         Log.i(TAG, onDestroy);
43     }
44 }
View Code

首次運行的日志如下:

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316102138.png

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

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316102164.png

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

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316102147.png

從新返回應用程序的時候日志如下:

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316102112.png

還有就是當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文件中通過標簽中的android:launchMode屬性來選擇啟動模式。

standard:

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

singleTop

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

singleTask

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

singleInstance

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

該如何去使用它?

我們在創建activity的時候必須繼承Android自帶的Activity,在使用時必須要在AndroidManifest.xml文件中注冊,如下:

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316102121.png

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

是通過意圖(Intent)進行通訊,數據傳輸,開啟活動

什麼是意圖呢?

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

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

 

 

 

 


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