安卓學習筆記之Activity(一)

**

安卓四大組件之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);

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章