簡體   English   中英

什么時候可以在入口點活動類中省略對 onCreate 的調用?

[英]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的入口點活動。

情況一直如此,我只是沒有意識到這一點,或者是否能夠在某些時候添加一些內容來忽略覆蓋調用? 這是不好的做法嗎? 這是否會阻止您通過BundleContext在您的子類和父類之間建立連接,您通常通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM