Activity的onRestart()方法調用時機


在項目中看到Activity使用onRestart(),平時對這個方法的調用時機知道的比較少,研究一下它啥時候會被調用。

代碼很簡單:

[java] view plain copy
  1. <span style="font-size:18px;">public class MainActivity extends AppCompatActivity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.         Button btn = (Button) findViewById(R.id.btn);  
  8.         btn.setOnClickListener(new View.OnClickListener() {  
  9.             @Override  
  10.             public void onClick(View v) {  
  11.                 Intent intent = new Intent(MainActivity.this, MainActivity1.class);  
  12.                 startActivity(intent);  
  13.             }  
  14.         });  
  15.         Log.e(MainActivity.class.getSimpleName(), "onCreate()");  
  16.     }  
  17.   
  18.     @Override  
  19.     protected void onRestart() {  
  20.         super.onRestart();  
  21.         Log.e(MainActivity.class.getSimpleName(), "onRestart()");  
  22.     }  
  23.   
  24.     @Override  
  25.     protected void onStart() {  
  26.         super.onStart();  
  27.         Log.e(MainActivity.class.getSimpleName(), "onStart()");  
  28.     }  
  29.   
  30.     @Override  
  31.     protected void onResume() {  
  32.         super.onResume();  
  33.         Log.e(MainActivity.class.getSimpleName(), "onResume()");  
  34.     }  
  35.   
  36.     @Override  
  37.     protected void onPause() {  
  38.         super.onPause();  
  39.         Log.e(MainActivity.class.getSimpleName(), "onPause()");  
  40.     }  
  41.   
  42.     @Override  
  43.     protected void onStop() {  
  44.         super.onStop();  
  45.         Log.e(MainActivity.class.getSimpleName(), "onStop()");  
  46.     }  
  47.   
  48.     @Override  
  49.     protected void onDestroy() {  
  50.         super.onDestroy();  
  51.         Log.e(MainActivity.class.getSimpleName(), "onDestroy()");  
  52.     }  
  53. }  
  54. </span>  


(1)啟動這個demo執行如1;onCreate()--->onStart()--->onResume()這三個方法

(2)按下home鍵執行如2;onPause()--->onStop()這兩個方法

(3)再次打開這個demo執行如3;onRestart()--->onStart()--->onResume()三個方法。




(4)點擊界面的btn,跳轉到另一個Activity1,會執行如下圖1;onPause()--->onStop()兩個方法

(5)從Activity1返回,會執行如下圖2;onRestart()--->onStart()--->onResume()三個方法




(6)切換到其他的應用,執行如下圖1;onPause()--->onStop()兩個方法

(7)從其他應用切換回來,執行如下圖2;onRestart()--->onStart()--->onResume()三個方法




總結:可以看到以下幾種情況下onRestart()方法是會被調用的,測試的手機MI 2S,系統版本4.1.1。

(1)按下home鍵之后,然后切換回來,會調用onRestart()。

(2)從本Activity跳轉到另一個Activity之后,按back鍵返回原來Activity,會調用onRestart();

(3)從本Activity切換到其他的應用,然后再從其他應用切換回來,會調用onRestart();



想知道更詳細的Activity生命周期,還可以參考一下文章:

http://blog.csdn.net/liuhe688/article/details/6733407

http://blog.csdn.net/android_tutor/article/details/5772285

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM