安卓學習筆記之Activity(一)

DoesO_o發表於2017-06-14

**

安卓四大元件之Activity

**

1.介紹

**

Activity的出現無處不在,從手機開始啟動的第一個頁面的都是Activity。主要用於可見的狀態與使用者進行互動。好比一張紙,我們需要用程式碼這隻“筆”來描繪一些資訊告訴讀者,這張紙裡面有些什麼內容和需要操作什麼東西。總的來說就是能看到的基本上和Activity。如果有什麼錯誤的地方,希望大家指出。感激不盡。
既然作為作業系統的元件,那麼每個元件都會有獨立的生命週期。


**

2. 生命週期

**
在Android的官方文件我們能夠看到這樣的一張圖片:
這裡寫圖片描述

簡單看做是,系統會呼叫如下幾個方法。
OnCreate()–>OnStart()–>OnResume()–>OnPause()–>OnStop()–>OnDestroy()

Activity擁有四種基本狀態
1*.Active/Running*
一個Activity啟動入棧(裝載Activity的容器),有先進先出的特點。它會顯示螢幕的最前端(Activity棧頂)此時它是處於和使用者互動的啟用狀態,叫做活動狀態或者執行狀態
2. Paused
暫停狀態,被一個新的非全屏的Activity或者一個透明的Activity被放到棧頂,比如你用手機瀏覽網頁的時候,突然來了一個電話,那麼這個activity就是處於paused的狀態,但是它依然是保持活力的。
3. Stopped
停止狀態,如果一個activity完全為另一個Activity完全覆蓋,它不可見,所以它的視窗被隱藏,當系統記憶體吃緊的時候,停止狀態的Activity會被強行終止掉
4. Killed
殺死狀態,顧名思義,被系統回收,意味著系統記憶體吃緊的時候,或者你不需要用這個Activity的時候,系統會直接終止它的程式。

好了。那麼系統是如何運作Activity的呢 ?
那就是上面我們說的幾個方法了。
當我們首次使用ADT/Android studio建立安卓工程的時候,我們建立一個工程的時候都會預設建立一個OnCreate方法並呼叫它。onCreate

我們點選執行的時候,那麼就會彈出Hello world。
這裡寫圖片描述

那我們新增剩餘的方法.

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStart() {
        Log.i("dd","onStart");
        super.onStart();
    }

    @Override
    protected void onPause() {
        Log.i("dd","onPause");
        super.onPause();
    }

    @Override
    protected void onResume() {
        Log.i("dd","onResume");
        super.onResume();
    }

    @Override
    protected void onStop() {
        Log.i("dd","onStop");
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        Log.i("dd","onDestroy");
        super.onDestroy();
    }
}

這裡寫圖片描述

當我按下返回這個按鈕的時候,退出到主介面。

這裡寫圖片描述

但是當我按下,Home這個按鈕的時候,
這裡寫圖片描述

這次並沒有銷燬,而是在後臺執行著。執行onPause和onStop這兩個方法,
當我點回去的時候發現,
這裡寫圖片描述

繼續執行onStart()和onResume()方法。最後不用的時候會自動銷燬,執行onDestroy()


3.如何啟動一個Activity?

要啟動一個Activity用到的就是Intent這個類,我們先建立一個MyActivity類並在Manifest檔案裡註冊

public class MyActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

然後通過Intent 建立一個物件,在Intent構造方法中分別傳入,Context,還有對應想跳轉另一個的Activity的類就行了。最後呼叫startActivity()將Intent的物件傳進去就行了。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent=new Intent(this,MyActivity.class);
        startActivity(intent);

    }

相關文章