国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Activity的構造方法

2019-11-09 17:34:14
字體:
來源:轉載
供稿:網友

正如《Android Activity的啟動和跳轉》一文所說,在Android APP中啟動一個Activity都是通過startActivity()或startActivityForResult()來實現,并不會直接在APP代碼中new一個Activity對象來使用,直接new出來的Activity對象是無法使用的。一般來說我們在實現一個Activity類時會將初始化的一些操作放到onCreate()中執行,并不會實現其構造方法。但是這并不是說Activity類沒有構造方法,或者構造方法不會被調用。

事實上,調用startActivity()或startActivityForResult()之后,Android框架中的代碼會完成Activity對象的創建。在創建Activity對象時仍然會執行Activity類的構造方法。

在android.app.Instrumentation類中有一個newActivity方法。Android框架正是通過此方法來創建一個Activity對象的。其代碼如下。

public Activity newActivity(ClassLoader cl, String className, Intent intent) throws InstantiationException, IllegalaccessException, ClassNotFoundException { return (Activity)cl.loadClass(className).newInstance();}

可以看到,這里通過ClassLoader的loadClass()方法來加載指定的Activity類,得到對應的Class對象,然后再調用Class對象的newInstance()方法創建Activity對象。

由于Class對象的newInstance()方法在創建對象時會調用該類的無參構造方法,因此,如果確實需要在Activity構造的時候執行一些操作,可以在這個Activity類中增加一個無參的構造方法,這個構造方法會在newInstance()時被自動調用。

這里有兩點需要注意:

一個Activity類中只有無參的構造方法會被執行,定義有參數的構造方法是沒有意義的。一個Activity類中如果沒有無參構造方法,或者無參構造方法不是public的,則在執行newInstance()的時候會產生異常。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奎屯市| 伊金霍洛旗| 旬邑县| 永兴县| 乐安县| 富阳市| 城市| 许昌县| 盐津县| 共和县| 乌兰察布市| 集安市| 寿阳县| 山西省| 乡城县| 天峨县| 项城市| 南和县| 青铜峡市| 会理县| 扎赉特旗| 柘城县| 轮台县| 苏尼特左旗| 清水县| 扶余县| 叶城县| 白银市| 祁门县| 信宜市| 雷山县| 平安县| 灵武市| 房山区| 安义县| 华容县| 荆门市| 青河县| 瑞安市| 乐安县| 东莞市|