自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android Activity類應(yīng)用技巧分享

移動開發(fā) Android
Android Activity類中主要有六個應(yīng)用方法,分別為onCreate,onStart,onResume,onPause,onStop,onDestory等。

Android Activity類在Android操作系統(tǒng)的應(yīng)用中是常重要的。那么如何才能正確的在應(yīng)用中來操作這一類呢?在一個應(yīng)用中,每一個顯示的屏幕都是一個Activity。所以學(xué)習(xí)Android,必須要對Activity有一定的了解。在其他論壇中也有一些關(guān)于Activity的介紹,我在這里就想談?wù)勎覍ctivity學(xué)習(xí)的一些看法。首先Activity的生命周期很重要,Activity主要包含六個方法,分別是onCreate,onStart,onResume,onPause,onStop,onDestory。#t#

onCreate和onDestory對應(yīng)。onStart和onStop對應(yīng),onResume和onPause對應(yīng)。

這幾個函數(shù)大概是這樣定義的,當(dāng)啟動一個Android Activity類的時候,onCreate方法首先會被啟動,然后接著是onStart和onResume,也會啟動,一般地,等這幾個函數(shù)都啟動完了之后你這個Activity就可以被顯示出來了。當(dāng)然我這里說的是一般的情況,如果你要是在這三個函數(shù)初始化的時候啟動了一個后臺的Service,那么還要等待ServiceConnection執(zhí)行完畢才能夠被顯示出來,這里可能有人要問什么是Service了,在以后我會介紹它,這里大家就先了解下Service的回調(diào)函數(shù)也會影響Acitivity的啟動就可以了。

這是Activity啟動時會調(diào)用的三個函數(shù),在Acitivity銷毀的時候會調(diào)用onPause,onStop,onDestory。當(dāng)調(diào)用完onDestory之后,你的Acitivity也就被銷毀完畢了,這時候你在調(diào)用Activity的isFinishing的時候,就會返回true,但是此時Activity的this指針還可以被使用,如果你在Activity單起一個線程做其他事情的話,那么上下文變量context指針還是能夠被使用的。

當(dāng)然Android Activity類有可能還處于其他狀態(tài),不一定就是被顯示或者被銷毀,很有可能這個Activity啟動了另一個Activity,這個時候前先的那個Activiy就會被放到系統(tǒng)的堆棧中,等被啟動的Activity返回的時候,它又重新被顯示出來,這個流程是這樣的,一個Activity啟動了另外的一個Activity,那么它就會調(diào)用onPause函數(shù),進入一種停滯的狀態(tài),然后被啟動的Activity被銷毀返回后,又會調(diào)用onResume函數(shù)。

對于Activity的這種機制,我感覺在初始化的工作最好放到一個自己定義的一個接口中,因為由于Activity狀態(tài)的改變,你的Activity的Layout就有可能會被改變。說到這里就要談一下什么叫做Layout,每個Activity的界面的布局就是一個Layout,每個Activity都要有這樣一個布局它才能夠被顯示出來,一般地,我們都會把一個Layout放到一個XML文件當(dāng)中,然后直接調(diào)用Activity的setContentView函數(shù)來填充這個Activity,如果Layout不放在xml文件中,也可以用代碼生成一個動態(tài)的Layout,也就是說用Activity。

this指針生成一個Layout。這個給大家推薦一個非常好用的工具叫做droiddraw,論壇里就有鏈接,站長好像發(fā)過貼。這個工具非常好用,不用看教程半小時就能學(xué)會,上面有一些特定的控件,把控件擺好布局后直接能生成xml文件。把這個xml文件放到項目的res/layout文件夾下面就可以了。生成好Layout文件后,你就要為你程序要用到的一些控件設(shè)定ID,具體怎么設(shè)定大家可以在google的Android主頁里有,叫g(shù)ettingstarted,那個寫得很明白,我就不跟這里重述了。

接下來還是談下Android的這幾個主要的函數(shù),我還有些建議就是在onCreate函數(shù)中盡量少寫代碼,把盡肯能多的東西放到onResume和那個自定義的初始化函數(shù)里去寫,onResume這個函數(shù)被調(diào)用的幾率是非常高的,這里大家在模擬器上開發(fā)可能沒有感覺到onResume的重要性,在真機上測試就會發(fā)現(xiàn),當(dāng)屏幕變黑進入等待狀態(tài),然后你手動恢復(fù)屏幕變亮?xí)r也會進入onResume狀態(tài),所以我感覺把一些刷新控件的方法放到onResume函數(shù)中來做還是非常必要的。onPause,onStop,還有onDestroy函數(shù)都是用來做一些清理工作的,比如說一些變量要被釋放,一些線程要被停滯等等都可以放到這里來做。

下面我來總結(jié)一下Android Activity類一個大概的設(shè)計思路:

首先設(shè)計一個方法,這個方法主要作用就是初始化Activity的控件,進行各種條件判斷,對Acitvity來進行不用的布局初始化,這里舉個例子來解釋下為什么要初始化不同的布局,例如你的這個Activity從SD卡讀取了一些信息,那么當(dāng)你拔出SD卡的時候這些信息肯定也就沒有了,那么你就要進行另外的一個布局來顯示這個Activity,這個時候你就可以重用這個函數(shù)來進行布局的初始化。

onCreate函數(shù):注冊你要用到的變量,比如說service,receiver,這些變量是無論你的Activity是在前臺還是在后臺都能夠被響應(yīng)到的,然后調(diào)用上面那個用來初始化的函數(shù)初始化布局信息。

onStart函數(shù):注冊一些變量。這些變量必須在Android Activity類在前臺的時候才能夠被響應(yīng)。

onResume函數(shù):調(diào)用一些刷新UI的函數(shù),每當(dāng)Activity調(diào)用到這里時就要刷新一下UI各控件的狀態(tài)。

onPause函數(shù):一般是做一些變量的設(shè)置,因為這個時候Activity馬上就要切到后臺處理,可能有些變量就要被釋放掉或者狀態(tài)要做些相應(yīng)的調(diào)整。

onStop函數(shù):反注冊在onStart函數(shù)中注冊的變量。

onDestory函數(shù):反注冊在onCreate函數(shù)中注冊的變量。

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

接下來我來談?wù)凙ctivity中最簡單的一些通信方法,這里我先定義兩個名字為方便接下來的敘述,啟動另外一個Activity的那個Activity我們稱之為主Activity,被啟動的那個Activity我們稱之為子Activity。

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

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

方法二:當(dāng)一個主Activity想從一個子Activity接受消息時可以使用StartActivityforResult方法,例如這樣啟動一個Activity,startActivityForResult(i, REQUEST_CODE); 然后在主Activity中的onActivityResult方法對requestCode進行判斷來對子Android Activity類不同的返回處理不同的情況,另外子Activity也可以利用setResult方法來設(shè)置主Activity方法中的resultCode,這樣主Activity也可以根據(jù)子Activity的不同的resultCode來處理不同的情況。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-01-28 14:12:20

Android Act

2010-01-25 11:09:58

Android Htt

2010-01-25 16:08:37

Android ADB

2010-01-27 11:08:31

Android后臺程序

2010-01-28 10:55:14

Android電源管理

2009-12-15 10:23:23

Ruby應(yīng)用技巧

2010-01-27 18:33:16

Android SQL

2009-12-30 18:23:13

Silverlight

2009-12-29 17:56:47

Silverlight

2009-12-31 17:00:40

Silverlight

2010-01-04 14:35:55

Silverlight

2010-03-01 13:06:49

WCF繼承

2009-12-29 16:08:41

Silverlight

2009-12-18 10:47:16

Ruby裝飾模式

2010-02-01 11:13:00

C++ Traits

2010-02-22 15:20:54

WCF WS-Disc

2009-12-30 10:25:03

Silverlight

2010-02-22 17:21:02

WCF消息交換

2010-02-04 14:58:06

C++內(nèi)存分配

2010-02-25 15:25:19

WCF通道
點贊
收藏

51CTO技術(shù)棧公眾號