java activity_java中的Activity
Activity
首先,Activity是Android系統(tǒng)中的四大組件之一,可以用于顯示View。Activity是一個(gè)與用記交互的系統(tǒng)模塊,幾乎所有的Activity都是和用戶進(jìn)行交互的,但是如果這樣就能說Activity主要是用來顯示View就不太正確了。
在深入了解Activity之前,我們先要知道一下MVC設(shè)計(jì)模式,在JAVAEE 中MVC設(shè)計(jì)模式已經(jīng)很經(jīng)典了,而且分的也比較清晰了,但是在Android中,好多人對(duì)MVC在Android開發(fā)中的應(yīng)用不是很清楚,下面我就先來介紹一下MVC在Android開發(fā)中的應(yīng)用:
M(Model 模型):Model是應(yīng)用程序的主體部分,所有的業(yè)務(wù)邏輯都應(yīng)該寫在這里,在Android中Model層與JavaEE中的變化不大,如:對(duì)數(shù)據(jù)庫(kù)的操作,對(duì)網(wǎng)絡(luò)等的操作都放在該層(但不是說它們都放在同一個(gè)包中,可以分開放,但它們統(tǒng)稱為Model層)。
V(View 視圖):是應(yīng)用程序中負(fù)責(zé)生成用戶界面的部分,也是在整個(gè)MVC架構(gòu)中用戶唯一可以看到的一層,接收用戶輸入,顯示處理結(jié)果;在Android應(yīng)用中一般采用XML文件里德界面的描述,使用的時(shí)候可以非常方便的引入,當(dāng)然也可以使用JavaScript+Html等方式作為View。
C(Controller控制層)android的控制層的重任就要落在眾多的activity的肩上了,所以在這里就要建議大家不要在activity中寫太多的代碼,盡量能過activity交割Model業(yè)務(wù)邏輯層處理。
好了,在介紹過Android應(yīng)用開發(fā)中的MVC架構(gòu)后,我們就可以很明確的知道,在Android中Activity主要是用來做控制的,它可以選擇要顯示的View,也可以從View中獲取數(shù)據(jù)然后把數(shù)據(jù)傳給Model層進(jìn)行處理,最后再來顯示出處理結(jié)果。
介紹過Activity的主要作用后,那么我們就要詳細(xì)說一下Activity了。
Activity生命周期圖
Activity 的生命周期是被以下的函數(shù)控制的。
public class Activity extends ApplicationContext {
protected void onCreate(Bundle icicle);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onFreeze(Bundle outIcicle);
protected void onPause();
protected void onStop();
protected void onDestroy();
}
onCreate(Bundle) 函數(shù)是你進(jìn)行初始化的地方,這個(gè)也是執(zhí)行
setContentView(View)函數(shù)的地方,setContentView(View)函數(shù)可以傳入一個(gè)由XML
編制的UI界面,可以使UI和具體實(shí)現(xiàn)完全分離。
onPause()函數(shù)是處理用戶離開當(dāng)前 Activity 的地方。更重要的是,任何在當(dāng)前
Activity中的任何改變都要在這個(gè)函數(shù)中提交。
Activity有四種狀態(tài):
活動(dòng)狀態(tài),當(dāng)Activity處于Stack(棧)頂時(shí),就是手機(jī)當(dāng)前的現(xiàn)實(shí)屏幕,這是 Activity就
處于activity或者運(yùn)行狀態(tài)。
運(yùn)行但是失去焦點(diǎn),當(dāng)Activity還處于運(yùn)行狀態(tài)時(shí),但是屏幕是有另外一個(gè)Activity
處于文檔處于焦點(diǎn)狀態(tài),當(dāng)前的Activity就處于pause。
停止,當(dāng)Activity被另一個(gè)Activity完全覆蓋的時(shí)候,就被停止了,其實(shí)就是雖然在
運(yùn)行,但是用戶卻看不見。
結(jié)束,當(dāng)Activity處于pause或者stop時(shí),系統(tǒng)可以結(jié)束 Activity,回收資源,這
是Activity就是處于結(jié)束狀態(tài)了。
處于結(jié)束狀態(tài)的是Activity,如果要使用戶可見,只要重啟才可以。
Activity的響應(yīng)時(shí)間
當(dāng)前Activity所在的線程為主線程,它的響應(yīng)時(shí)間為5秒,如果在當(dāng)前運(yùn)行的Activity中進(jìn)行耗時(shí)的操作且響應(yīng)時(shí)間起過5秒,那么程序就會(huì)報(bào)ANR錯(cuò)誤。所以,這也是不建議在Activity中寫太多復(fù)雜代碼的原因之一。
當(dāng)然,有些代碼只能寫在Activity中,不然就運(yùn)行不了(它們不是生命周期方法),比如你想要獲得android系統(tǒng)或者硬件一的些信息,就必須在Activity中寫出來,如果單獨(dú)寫一個(gè)工具類獲得不了。
1.Activity的主要作用
Activity是Android一個(gè)非常重要的用戶接口,是可見的,用戶和應(yīng)用程序之間進(jìn)行交互的接口。在每個(gè)Activity中都可以放很多控件,所以也可以把Activity看作控件的容器。
2.創(chuàng)建Activity的要點(diǎn)
1)一個(gè)Activity就是一個(gè)類,并且這個(gè)類要繼承Activity,而這個(gè)被繼承的Activity來源于android.jar包
2)需要復(fù)寫onCreate方法,當(dāng)一個(gè)Activity第一次運(yùn)行時(shí)Android操作系統(tǒng)就會(huì)調(diào)用onCreate方法
3)因?yàn)锳ctivity是應(yīng)用程序的組件,所以每一個(gè)Activity都必須在AndroidManifest.xml里面注冊(cè),manifest相當(dāng)于應(yīng)用程序清單。
4) 為Activity添加必要的控件
3.在AndroidManifest.xml文件中注冊(cè)應(yīng)用Activity的方法
1) 注冊(cè)Activity的時(shí)候name的時(shí)候前面加點(diǎn),因?yàn)楹桶掀饋砭蛣偤檬沁@個(gè)類(或者說Activity)的路徑。
2) label,就是在頁(yè)面上方白色的部分顯示的文字
3)intent-filter,暫時(shí)不用管,意思就是你在哪個(gè)activity配置這個(gè)東西,哪個(gè)activity就在應(yīng)用打開的時(shí)候第一個(gè)運(yùn)行
4.在Activity中添加控件,就是在layout文件夾中創(chuàng)建布局文件(嚴(yán)格意義上來說并不是每一個(gè)Activity都要?jiǎng)?chuàng)建一個(gè)相應(yīng)的xml布局文件,比如:TextView textview = new TextView(this);
//以前我一直以為每創(chuàng)建一個(gè)Activity必須相應(yīng)地也要?jiǎng)?chuàng)建一個(gè)layout文件,現(xiàn)在發(fā)現(xiàn)不是這樣,也可以按照這個(gè)方法,創(chuàng)建一個(gè)簡(jiǎn)單的TextView,把Context設(shè)置為this,設(shè)置一個(gè)文本值,然后再將這個(gè)TextView設(shè)置為ContentView.這種個(gè)人覺得更加方便測(cè)試吧。
textview.setText("This is the Artists tab");
setContentView(textview);
}
}
這樣的方法同樣工作,但是總的來說還是建議為每一個(gè)Activity定義一個(gè)布局文件。
1) 程序中的setContentView就是設(shè)置這個(gè)Activity所使用的布局文件。
比如:setContentView(R.layout.my_text); //說到這里,注意一個(gè)問題,布局文件的名稱不允許有大寫
2) 在xml文件中設(shè)置的控件id會(huì)在R.java中生成id
3)在應(yīng)用程序中使用findViewById來取得布局文件中的控件(前提是布局文件中的控件必須設(shè)置相應(yīng)的id),因?yàn)樗姆祷仡愋蜑閂iew,所以要強(qiáng)制類型轉(zhuǎn)換為控件類型
舉個(gè)例子就是 Button button =(Button)findViewById(R.id.button);
————————————————
版權(quán)聲明:本文為CSDN博主「lidandan2016」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lidandan2016/article/details/78030688
總結(jié)
以上是生活随笔為你收集整理的java activity_java中的Activity的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《VoIP技术构架(第2版·修订版)》一
- 下一篇: Maven实战 Item4 -- Mav