簡體   English   中英

為什么每次啟動新活動時都會調用 onCreate()?

[英]Why is onCreate() being called whenever I launch a new activity?

我正在開發一個只顯示引號的相當簡單的應用程序。

我在 onCreate() 中有一些設置代碼,我假設它只會被調用一次,但事實並非如此。 我遇到了一些錯誤,這些錯誤是由於每次啟動新活動時,我的主要活動的 onCreate() 函數都會再次運行。

我用 Google 搜索了一下,人們聲稱 onCreate() 應該在應用程序的生命周期中只調用一次,但我在我的 onCreate 中添加了一個 Log.v 並且可以清楚地看到它在每次從它啟動活動時運行,這沒有意義。 我試過將 launchMode 設置為 singleTop,我的一個活動以 finish() 結束,但這沒有什么區別。

編輯:請參閱下面的答案。 原來我的其他活動擴展了我的主要活動,它使超級方法被多次調用。 不要那樣做!

檢查你的

onDestroy()

檢查它是否被調用

因為 on create 永遠不會被調用,除非 o

nDestroy()

叫做

好吧,我終於解決了。 我想我是個徹頭徹尾的白痴,但當我一年半前第一次啟動這個應用程序時,我真的不知道自己在做什么,因為這是我的第一個應用程序。

出於某種原因,當我實施第一個新活動時,我讓它擴展了主要活動而不是 AppCompatActivity。 所以我在新活動中對 super.onCreate() 和 super.onDestroy() 的調用是在調用它的超類,這是主要活動。 這讓我現在遇到這個問題很有道理。

如果不注意這樣的錯誤,您可能會在開發中走得很遠,所以也許其他人將來會犯這個錯誤並從這篇文章中得到幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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