首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測 / 活動(dòng)區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 12265|回復(fù): 0
上一主題 下一主題
[教程]

第四講:Activity入門指南

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
668
本節(jié)內(nèi)容   
理解Activity   
Activity的生命周期   
實(shí)例:觀察翻轉(zhuǎn)屏幕導(dǎo)致的Activity狀態(tài)變化
點(diǎn)此下載:
  
從這里可以看到Activity是Context類的子類,大家對(duì)此先有個(gè)印象。
二、理解Activity的生命周期
手機(jī)最重要也是最基礎(chǔ)的功能是打電話,也就意味著電話來的時(shí)候可能隨時(shí)要把現(xiàn)在的程序暫停,如果電量不足的時(shí)候也可能隨時(shí)要把現(xiàn)有程序關(guān)閉;因此Android程序和電腦上的程序有所不同,具體到Activity,Activity的生命周期不是自身控制的,而是由Android系統(tǒng)控制的。
在android中Activity有四種基本狀態(tài):   
1、Running   
位于屏幕最前端時(shí),此時(shí)處于可見狀態(tài),和用戶可交互的狀態(tài)。   
2、Paused   
當(dāng)Acitivy被另一個(gè)透明的或者非全屏的Activity覆蓋時(shí)的狀態(tài)叫Paused狀態(tài),雖然可見但不可交互。   
3、Stop   
當(dāng)Activity被另外一個(gè)Activity覆蓋、界面不可見時(shí)處于Stop狀態(tài)。   
4、Killed   
Activity被系統(tǒng)殺死或者跟本沒啟動(dòng)時(shí)就是Killed狀態(tài)。
我們下面看一下Activity的生命周期:
  
下面是上圖的簡單翻譯版本:
  
Activity棧:   
Android通過Activity棧的方式來管理Activity。
     
正在運(yùn)行的Activity 處在在棧的最頂端,它是運(yùn)行狀態(tài)的;
當(dāng)有新Activity進(jìn)入屏幕最上端時(shí),原來的Activity就會(huì)被壓入第二層,如果他的屏幕沒有被完全遮蓋,那么他處于Pause狀態(tài),如果他被遮蓋那么他處于Stop狀態(tài)。
當(dāng)然不管你出于任何一層,都可能在系統(tǒng)覺得資源不足時(shí)被強(qiáng)行關(guān)閉,當(dāng)然關(guān)閉時(shí)在棧底的程序最先被關(guān)閉。
譬如:當(dāng)你在程序中調(diào)用 Activity.finish()方法時(shí),結(jié)果和用戶按下 BACK 鍵一樣:他告訴 Activity Manager該Activity實(shí)例可以被“回收”。隨后 Activity Manager 激活處于棧第二層的 Activity 并重新入棧,把原 Activity 壓入到棧的第二層,從 Running 狀態(tài)轉(zhuǎn)到 Paused 狀態(tài)。
三.實(shí)例:觀察翻轉(zhuǎn)屏幕導(dǎo)致的Activity狀態(tài)變化
Activity類中定義了和生命周期相關(guān)的一些方法,這些方法會(huì)在狀態(tài)改變時(shí)被調(diào)用,譬如創(chuàng)建時(shí)調(diào)用的方法onCreate()。因此我們可以寫一個(gè)程序,在程序的每個(gè)一個(gè)方法中寫注釋,然后看看運(yùn)行時(shí)注釋的打印順序來跟蹤Activity的狀態(tài)變化。
   
下面是程序代碼:
   
   
  1. package android.basic.lesson4;import android.app.Activity;   
    import android.os.Bundle;   
    import android.util.Log;public class MainActivityLife extends Activity {   
    String tag =”[MainActivityLife]“;   
    /** Called when the activity is first created. */   
    @Override   
    public void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.main);   
    Log.i(tag, “onCreate”);   
    }@Override   
    public void onStart(){   
    super.onStart();   
    Log.i(tag, “onStart”);   
    }@Override   
    public void onPause(){   
    super.onPause();   
    Log.i(tag, “onPause”);   
    }@Override   
    public void onResume(){   
    super.onResume();   
    Log.i(tag, “onResume”);   
    }@Override   
    public void onStop(){   
    super.onStop();   
    Log.i(tag, “onStop”);   
    }@Override   
    public void onDestroy(){   
    super.onDestroy();   
    Log.i(tag, “onDestroy”);   
    }   
    }
復(fù)制代碼
  
   
然后調(diào)出LogCat工具,來觀察程序的運(yùn)行細(xì)節(jié)。通過LogCat的過濾器我們可以看到程序啟動(dòng)、屏幕翻轉(zhuǎn)、按后退鍵程序退出的過程,這有助于我們驗(yàn)證剛才所學(xué)的知識(shí)。
  
我們可以看到屏幕翻轉(zhuǎn)時(shí),Android系統(tǒng)把ActivityLife這個(gè)Activity先殺死(具體順序是先暫停、后關(guān)閉再銷毀),然后再啟動(dòng)(具體順序是先創(chuàng)建,后啟動(dòng)再恢復(fù))。通過這個(gè)例子我們也清楚的看到了,是Android系統(tǒng)而不是程序員在控制Activity的生命周期。
本節(jié)課就到這里。

上一篇:第五講:用戶界面 View(一)
下一篇:第三講:Android模擬器的使用

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-12-22 16:07 , Processed in 0.061506 second(s), 13 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表