Activity是android中的四大組件(其他三個ContentProvider,Service, Broadcast(BroadcastReceiver))。 在安卓中代表的是程序的一個頁面。為用戶體重一個屏幕,負責與用戶交互。
創建Activity必須要繼承Activity類。在自定義的Activity中,其中兩個最重要的方法:
1、onCreate(Bundle)方法:這個方法時初始化 Activity的方法。必須要實現這個方法,因為系統在創建Activity的時候回自動調用此方法,在實現這個方法時,應該初始化一些必要的組件,更重要的是必須為Activity用 setContentView()方法設置用戶界面的布局。
2、onPause()方法:使用者在準備離開此Activity的時候,保存用戶的數據,Activity狀態等。
為了能夠使用Context.startActivity(),所有的activity類都必須在AndroidManifest.xml主配置文件中定義相關的activity標簽。
Activity有三種本質區別的狀態:
1、Resumed:當activity在前臺得到用戶的焦點時(也稱之為Running狀態)
2、Paused:另一個activity在前端顯示,得到焦點,但是這個activity仍然可見。也就是另一個活動是可見的,部分是透明的,還沒有完全覆蓋掉整個手機屏幕,占用手機較少的內存資源,或者在手機急需要內存資源時,將其結束進程。
3、Stopped:一個Activity被另外的Activity完全覆蓋掉。但是它依然保持所有狀態和成員信息,但是它不再可見,所以它的窗口被隱藏,當系統內存需要被用在其他地方的時候,Stopped的Activity將被殺掉。
Activity的生命周期圖:
共有七個生命周期:
·onCreate:當活動首次被創建時調用
·onStart:當活動對用戶可見時調用
·onResume:當活動開始和用戶交互時調用
·onPause:在當前活動被暫停并恢復以前的活動時調用
·onStop:當活動不再對用戶可見時調用
·onDestory:在活動被系統銷毀前(手動或由系統執行以節省內存)前調用
·onRestart:在活動已停止并要再次啟動時調用
在啟動activity時,不是通過類的main方法,而是通過activity的onCreate方法。在android程序啟動,在我們能看見時,已經經過了onCreate ---> onStart --->onResume三個過程,當想更了解activity生命周期時,可以重寫activity里面的
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
的七個方法。加上輸出語句,模擬各種操作,在Logcat中查看輸出。
MainActivity中如下:
package com.zzh.activity; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("tag", "--------------> onCreate <-----------"); } @Override protected void onStart() { super.onStart(); Log.i("tag", "--------------> onStart <-----------"); } @Override protected void onRestart() { super.onRestart(); Log.i("tag", "--------------> onRestart <-----------"); } @Override protected void onResume() { super.onResume(); Log.i("tag", "--------------> onResume <-----------"); } @Override protected void onPause() { super.onPause(); Log.i("tag", "--------------> onPause <-----------"); } @Override protected void onStop() { super.onStop(); Log.i("tag", "--------------> onStop <-----------"); } @Override protected void onDestroy() { super.onDestroy(); Log.i("tag", "--------------> onDestroy <-----------"); } } |
當進程序啟動進入頁面時:
Logcat中出現的日志信息:---->Resumed
退出程序時:按返回鍵Esc,Logcat中出現的日志信息:Stopped
如果有電話打來,然后再掛斷,此時的Logcat中出現的日志信息:--Paused--->Resumed
三種狀態完成.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。