android Activity類的使用

來源:互聯網
上載者:User
在android開發中Activity非常重要,在一個應用中,每一個顯示的螢幕都是一個Activity.所以學習android,必須要對Activity有一定的瞭解.在其他論壇中也有一些關於Activity的介紹,我在這裡就想談談我對Activity學習的一些看法.首先Activity的生命週期很重要,Activity主要包含六個方法,分別是onCreate,onStart,onResume,onPause,onStop,onDestory.

onCreate和onDestory對應.onStart和onStop對應,onResume和onPause對應.

這幾個函數大概是這樣定義的,當啟動一個Activity的時候,onCreate方法首先會被啟動,然後接著是onStart和onResume,也會啟動,一般地,等這幾個函數都啟動完了之後你這個Activity就可以被顯示出來了.當然我這裡說的是一般的情況,如果你要是在這三個函數初始化的時候啟動了一個背景Service,那麼還要等待ServiceConnection執行完畢才能夠被顯示出來,這裡可能有人要問什麼是Service了,在以後我會介紹它,這裡大家就先瞭解下Service的回呼函數也會影響Acitivity的啟動就可以了.這是Activity啟動時會調用的三個函數,在Acitivity銷毀的時候會調用onPause,onStop,onDestory.當調用完onDestory之後,你的Acitivity也就被銷毀完畢了,這時候你在調用Activity的isFinishing的時候,就會返回true,但是此時Activity的this指標還可以被使用,如果你在Activity單起一個線程做其他事情的話,那麼上下文變數context指標還是能夠被使用的.

     當然Activity有可能還處於其他狀態,不一定就是被顯示或者被銷毀,很有可能這個Activity啟動了另一個Activity,這個時候前先的那個Activiy就會被放到系統的堆棧中,等被啟動的Activity返回的時候,它又重新被顯示出來,這個流程是這樣的,一個Activity啟動了另外的一個Activity,那麼它就會調用onPause函數,進入一種停滯的狀態,然後被啟動的Activity被銷毀返回後,又會調用onResume函數.對於Activity的這種機制,我感覺在初始化的工作最好放到一個自己定義的一個介面中,因為由於Activity狀態的改變,你的Activity的Layout就有可能會被改變.說到這裡就要談一下什麼叫做Layout,每個Activity的介面的布局就是一個Layout,每個Activity都要有這樣一個布局它才能夠被顯示出來,一般地,我們都會把一個Layout放到一個XML檔案當中,然後直接調用Activity的setContentView函數來填充這個Activity,如果Layout不放在xml檔案中,也可以用代碼產生一個動態Layout,也就是說用Activity.this指標產生一個Layout.這個給大家推薦一個非常好用的工具叫做droiddraw,論壇裡就有連結,站長好像發過貼.這個工具非常好用,不用看教程半小時就能學會,上面有一些特定的控制項,把控制項擺好布局後直接能產生xml檔案.把這個xml檔案放到項目的res/layout檔案夾下面就可以了.產生好Layout檔案後,你就要為你程式要用到的一些控制項設定ID,具體怎麼設定大家可以在google的android首頁裡有,叫gettingstarted,那個寫得很明白,我就不跟這裡重述了.接下來還是談下android的這幾個主要的函數,我還有些建議就是在onCreate函數中盡量少寫代碼,把盡肯能多的東西放到onResume和那個自訂的初始化函數裡去寫,onResume這個函數被調用的幾率是非常高的,這裡大家在模擬器上開發可能沒有感覺到onResume的重要性,在真機上測試就會發現,當螢幕變黑進入等待狀態,然後你手動恢複螢幕變亮時也會進入onResume狀態,所以我感覺把一些重新整理控制項的方法放到onResume函數中來做還是非常必要的.onPause,onStop,還有onDestroy函數都是用來做一些清理工作的,比如說一些變數要被釋放,一些線程要被停滯等等都可以放到這裡來做.

下面我來總結一下Activity一個大概的設計思路:

首先設計一個方法,這個方法主要作用就是初始化Activity的控制項,進行各種條件判斷,對Acitvity來進行不用的布局初始化,這裡舉個例子來解釋下為什麼要初始化不同的布局,例如你的這個Activity從SD卡讀取了一些資訊,那麼當你拔出SD卡的時候這些資訊肯定也就沒有了,那麼你就要進行另外的一個布局來顯示這個Activity,這個時候你就可以重用這個函數來進行布局的初始化.

onCreate函數:註冊你要用到的變數,比如說service,receiver,這些變數是無論你的Activity是在前台還是在後台都能夠被響應到的,然後調用上面那個用來初始化的函數初始化布局資訊.

onStart函數:註冊一些變數.這些變數必須在Activity在前台的時候才能夠被響應.

onResume函數:調用一些重新整理UI的函數,每當Activity調用到這裡時就要重新整理一下UI各控制項的狀態.

onPause函數:一般是做一些變數的設定,因為這個時候Activity馬上就要切到幕後處理,可能有些變數就要被釋放掉或者狀態要做些相應的調整.

onStop函數:反註冊在onStart函數中註冊的變數.

onDestory函數:反註冊在onCreate函數中註冊的變數.

上面談了些Activity的最常用的一些方法,當然還有很多方法沒有談到,有很多方法我也沒有用過,其他方法大家可以參考google的文檔.

接下來我來談談Activity中最簡單的一些通訊方法,這裡我先定義兩個名字為方便接下來的敘述,啟動另外一個Activity的那個Activity我們稱之為主Activity,被啟動的那個Activity我們稱之為子Activity.

主Activity和子Acitivity通訊的方式有很多種這裡介紹兩種最簡單的方法。

方法一:通過Intent來進行參數的傳遞,在Intent中有各種putXXX方法來存放各種參數,然後在子Activity接收到這個Intent時能夠從這個Intent裡取出這個參數,利用getIntnet().getXXXExtra()方法就可以了.

方法二:當一個主Activity想從一個子Activity接受訊息時可以使用StartActivityforResult方法,例如這樣啟動一個Activity,startActivityForResult(i, REQUEST_CODE); 然後在主Activity中的onActivityResult方法對requestCode進行判斷來對子Activity不同的返回處理不同的情況,另外子Activity也可以利用setResult方法來設定主Activity方法中的resultCode,這樣主Activity也可以根據子Activity的不同的resultCode來處理不同的情況.

今天就先寫這麼多吧,有什麼問題大家加我QQ,可以詳談.

我在補充兩句:現在android好像很少有中文資料,一般都要看google的英文文檔來學習,

如果你要是對java理解比較深的話,那麼我覺得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.