[英]When is it acceptable to omit a call to onCreate within an entrypoint activity class?
我正在研究TensorFlow Lite Android 示例應用程序代碼,並注意到它們的入口點類ClassifierActivity
沒有覆蓋onCreate
。 到目前為止,根據關於 onCreate() 的活動生命周期指南
您必須實現此回調,它會在系統首次創建活動時觸發。
我認為必須在入口點活動中調用/覆蓋onCreate
。 我所說的入口點活動是指清單中指定的活動。
從對空活動的簡單測試來看,Android 似乎只是從可用的最低可用子類調用onCreate
方法。
例如,如果我們有這樣的層次結構: Child3 <-- Child2 <-- Child1 <-- Activity
Child3 擴展 Child2 的地方,依此類推。 如果只有Child1和活動包含到電話onCreate
,我們提出我們的清單只Child3,它會首先調用onCreate
的方法Child1
。 從 OOP 的角度來看,這是有道理的,但出於某種原因,我覺得 Android 應用程序不會在沒有覆蓋它之前構建,它讓我無法看到沒有覆蓋調用onCreate
的入口點活動。
情況一直如此,我只是沒有意識到這一點,或者是否能夠在某些時候添加一些內容來忽略覆蓋調用? 這是不好的做法嗎? 這是否會阻止您通過Bundle
或Context
在您的子類和父類之間建立連接,您通常通過super.onCreate()
傳遞?
您必須實現此回調,它會在系統首次創建活動時觸發。
這並不意味着如果應用程序沒有實現onCreate()
方法就不會啟動,而是意味着如果您想在屏幕上顯示與默認值不同的內容,則必須實現它。 因為無論您是否實現了onCreate()
都會自動被調用。
這顯然在下一個短語中描述:
在 onCreate() 方法中,您執行基本的應用程序啟動邏輯,該邏輯應該在整個活動生命周期內只發生一次。
在不覆蓋任何生命周期回調方法的情況下運行應用程序將正常運行; 運行以下代碼將完全沒有問題:
class MainActivity : AppCompatActivity() {
}
對於 TensorFlow 示例:
我正在研究 TensorFlow Lite Android 示例應用程序代碼,並注意到它們的入口點類 ClassifierActivity 沒有覆蓋 onCreate。
他們的ClassifierActivity
不會覆蓋onCreate()
,但它從覆蓋/實現onCreate()
的CameraActivity
擴展而來。
@Override
protected void onCreate(final Bundle savedInstanceState) {
LOGGER.d("onCreate " + this);
super.onCreate(null);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.tfe_ic_activity_camera);
if (hasPermission()) {
setFragment();
} else {
requestPermission();
}
//....
此處CameraActivity
僅被視為存在基本 UI 內容的基礎活動; 可能他們需要將圖像處理的代碼保留在ClassifierActivity
,而不是CameraActivity
的基本人員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.