1. 程式人生 > >怎樣實現android 返回到上一個Activity並重新執行一次onCreate方法

怎樣實現android 返回到上一個Activity並重新執行一次onCreate方法

對於android新手來說,大都對activity的生命週期不是太瞭解,有關activity的生命週期方法執行順序,我這裡看到一篇文章http://www.2cto.com/kf/201409/334386.html

如下是一段典型的從AActivity切換到BActivity的日誌,:

10-17 20:54:46.997: I/com.example.servicetest.AActivity(5817): onPause() 1166919192 taskID=66
10-17 20:54:47.021: I/com.example.servicetest.BActivity(5817): onCreate() 1166971824 taskID=66
10-17 20:54:47.028: I/com.example.servicetest.BActivity(5817): onStart() 1166971824 taskID=66
10-17 20:54:47.028: I/com.example.servicetest.BActivity(5817): onResume() 1166971824 taskID=66
10-17 20:54:47.099: I/com.example.servicetest.AActivity(5817): onStop()

1166919192 taskID=66

先AActivity的onPause()被呼叫,然後是BActivity的初始化流程(onCreate() --> onStart() --> onResume()),再然後是AActivity的onStop()被呼叫。

瞭解了activity生命週期方法的執行順序之後,我們就可以解決文章標題中提到的問題。

新手們大多都喜歡把所有的初始化都寫在onCreate()方法裡面

如果所有的初始化都在onCreate()中實現,會有什麼問題?

出自http://www.2cto.com/kf/201409/334386.html

首先,Activity的onCreate()被呼叫時,Activity還不可見,如果要做一些動畫,既然檢視還不存在,在onCreate中來啟動動畫,明顯有問題;

其次,AActivity 切換到 BActivity,再切換到 AActivity(我們假定是AActivity的同一個例項),由於例項已經存在,所以onCreate不會再被調

用,那AActivity從後臺切換至前臺時,有可能需要一些初始化,那就沒法再被呼叫到了,也有問題;

所以Activity從後臺切換至前臺時,如果需要一些初始化,就必須將初始化寫在onResume ()方法裡面