最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Android Studio 開發(fā)之onCreate( )方法

2023-06-04 21:04 作者:XLongDD  | 我要投稿

Android Studio開發(fā)之onCreate( )方法詳解

?????? onCreate()函數(shù):用于activity初始化的時候。一般情況下,我們需在onCreate()中調(diào)用setContentView(int)函數(shù)填充屏幕的UI,通過findViewById(int)返回.xml文件中定義的視圖或組件的ID。子類在重寫onCreate()方法的時候必須調(diào)用父類的onCreate()方法,

即super.onCreate(),否則會拋出異常。

例(正確寫法):

??? protected void onCreate(Bundle savedInstanceState) {
??????? super.onCreate(savedInstanceState);
??????? setContentView(R.layout.activity_main);
??????? initView();
??? }

?? ????但是,我們必須要注意的是,在onCreate()函數(shù)里我們需要配置一些必要的信息,但是并不是所有的事情都能在這里做。

????????大家應(yīng)該知道,一個activity啟動調(diào)用的第一個函數(shù)就是onCreate(),onCreate()主要作用是:在activity啟動時進行一些必要的初始化工作。而這個函數(shù)onCreate()調(diào)用完后,activity并沒有完全啟動了,或者只是跳到前臺了而已。

????????除此之外,還需要其他的大量工作,需要知道的是:onCreate之后還有onRestart()和onStart()等方法需要執(zhí)行,實際上在onStart()調(diào)用完畢后這個activity仍然是沒有完全啟動的,也僅是前臺可見,直到 onResume() 調(diào)用后這個onCreate才算真正的啟動。

????????既然這樣,那么在一個activity真正啟動之前任何相當耗時的動作都會導(dǎo)致activity啟動緩慢,特別是在onCreate里面耗時長的話可能會導(dǎo)致極差的用戶體驗。

?? 下面來看一個例子:
protected void onCreate(Bundle savedInstanceState) {
??? // TODO Auto-generated method stub
??? ?
??? super.onCreate(savedInstanceState);
??? this.requestWindowFeature(Window.FEATURE_NO_TITLE);
??? mContext = this;
??? setContentView(R.layout.main);
??? dataLoad = new DataLoading();
??? mScrollLayout = (ScrollLayout)findViewById(R.id.ScrollLayoutTest);
??? btnExit = (ImageButton)findViewById(R.id.btn_exit);
??? btnExit.setOnClickListener(btnExitClickListener);
??? btnContacts = (ImageButton)findViewById(R.id.btn_contacts);
??? btnContacts.setOnClickListener(btnContactsClickListener);
??? ?
??? mSpeedDailDataMgr = new SpeedDailMgr(this);
??? loadGripView();
?
??? //in MTK?????? ?
?????? //mCallOptionHandler = new CallOptionHandler(this);
?????? mCallOptionHandler = new ContactsCallOptionHandler(this,
??????????????? new ContactsCallOptionHandlerFactory());?????? ?
??? //don't consider getting no data, ex: when starting up
??? updateEnabledCard();
}
????????這是一個APP的一個Activity的onCreate的寫法。其實這段代碼沒有什么問題,而且看起來也是比較簡單的代碼。不過里面大量危險的代碼段:不管是dataLoad = new DataLoading(); 還是 mSpeedDailDataMgr = new SpeedDailMgr(this);更或者是loadGripView();甚至updateEnabledCard();這么危險的處理都是不應(yīng)該在這里來處理的。這里包含了加載數(shù)據(jù)庫數(shù)據(jù)、讀取文件信息、讀取SIM卡信息,這些操作都是有可能拋出異常的,而且其操作耗時也是不確定的!對于面對這樣問題,我覺得應(yīng)該注意下面幾個方面:

(1)在Activity啟動前,盡量少做。

(2)對于布局比較復(fù)雜的時候,可以考慮不要一次性全部加載上,動態(tài)加載是一個好的辦法。

(3)對于及時需要的數(shù)據(jù),加載起來耗時的又有異常危險的,一定記得開辟一個線程來做這些動作,千萬記得不要做阻塞主線程(UI線程)的任何事情。

(4)對于特殊情況下,Activity啟動確實需要大量工作時候,可以考慮先加載一個簡單的布局(或是Activity)來過渡.。

(5)所有的目的都是讓你要啟動的組件盡快上場,而不是以啟動完所有組件后再上場,這樣做的話就太耗時了。

Android Studio 開發(fā)之onCreate( )方法的評論 (共 條)

分享到微博請遵守國家法律
温州市| 乌兰察布市| 郧西县| 鸡泽县| 固原市| 荆门市| 绥滨县| 通河县| 宣汉县| 七台河市| 汝阳县| 灵武市| 双辽市| 安龙县| 赤峰市| 昭通市| 广东省| 开原市| 阳江市| 武汉市| 田东县| 神农架林区| 平塘县| 荔波县| 庆城县| 庆阳市| 台南县| 甘洛县| 延川县| 犍为县| 浠水县| 北碚区| 峡江县| 渝中区| 虞城县| 蓬溪县| 海阳市| 岳阳县| 磴口县| 建阳市| 寿光市|