Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android Actitity的生命周期,androidactitity

Android Actitity的生命周期,androidactitity

編輯:關於android開發

Android Actitity的生命周期,androidactitity


新建項目,MainActivity代碼如下:

package com.wuyudong.lifecycle;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("onCreate");
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        System.out.println("onDestroy");
    }
    @Override
    protected void onPause() {
        super.onPause();
        System.out.println("onPause");
    }
    @Override
    protected void onResume() {
        super.onResume();
        System.out.println("onResume");
    }
    @Override
    protected void onStart() {
        super.onStart();
        System.out.println("onStart");
    }
    @Override
    protected void onStop() {
        super.onStop();
        System.out.println("onStop");
    }
    
}

運行項目,在logcat中查看打印信息:

關閉應用後,打印其他的銷毀信息

activity的生命周期

什麼是生命周期?
對象從創建到銷毀的階段,必須會執行的方法,這些方法就是生命周期的回調

activity生命周期:
new - gc

oncreate()  activity被創建的時候調用的方法
ui界面的初始化 setContentView()

onStart() activity的界面用戶可見
更新ui的操作,播放視頻

onDestroy()  activity被銷毀的時候調用的方法
界面退出之前的掃尾操作,短信發送器,退出前數據的保存。

onStop() activity的界面用戶不再可見
界面不可見,暫停視頻播放

onResume()
界面獲取到了焦點,按鈕可以相應點擊事件

onPause()
界面失去了焦點,按鈕就不可以相應點擊事件

onRestart()
activity被最小化了,並沒有銷毀,如果下次再去打開這個activity
重新用戶界面可見

Activity有三個狀態:
1、當它在屏幕前台時(位於當前任務堆棧的頂部),它是激活或運行狀態。它就是響應用戶操作的Activity。
2、當它失去焦點但仍然對用戶可見時(如右圖),它處於暫停狀態。即在它之上有另外一個Activity。這個Activity也許是透明的,或者沒有完全覆蓋全屏,所以被暫停的Activity仍對用戶可見。暫停的Activity仍然是存活狀態(它保留著所有的狀態和成員信息並保持和窗口管理器的連接),但系統處於極低內存時仍然可以殺死這個Activity。
3、完全被另一個Activity覆蓋時則處於停止狀態。它仍然保留所有的狀態和成員信息。然而對用戶是不可見的,所以它的窗口將被隱藏,如果其它地方需要內存,則系統經常會殺死這個Activity。


當Activity從一種狀態轉變到另一種狀態時,會調用以下保護方法來通知這種變化:
void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()

這七個方法定義了Activity的完整生命周期。實現這些方法可以幫助我們監視其中的三個嵌套生命周期循環:

1、Activity的完整生命周期自第一次調用onCreate()開始,直至調用onDestroy()為止。Activity在onCreate()中設置所有“全局”狀態以完成初始化,而在onDestroy()中釋放所有系統資源。例如,如果Activity有一個線程在後台運行從網絡上下載數據,它會在onCreate()創建線程,而在 onDestroy()銷毀線程。

2、Activity的可視生命周期自onStart()調用開始直到相應的onStop()調用結束。在此期間,用戶可以在屏幕上看到Activity,盡管它也許並不是位於前台或者也不與用戶進行交互。在這兩個方法之間,我們可以保留用來向用戶顯示這個Activity所需的資源。例如,當用戶不再看見我們顯示的內容時,我們可以在onStart()中注冊一個BroadcastReceiver來監控會影響UI的變化,而在onStop()中來注消。onStart() 和 onStop() 方法可以隨著應用程序是否為用戶可見而被多次調用。

3、Activity的前台生命周期自onResume()調用起,至相應的onPause()調用為止。在此期間,Activity位於前台最上面並與用戶進行交互。Activity會經常在暫停和恢復之間進行狀態轉換——例如當設備轉入休眠狀態或者有新的Activity啟動時,將調用onPause() 方法。當Activity獲得結果或者接收到新的Intent時會調用onResume() 方法。關於前台生命周期循環的例子請見PPT下方備注欄。


接下來實踐一下:

新建項目,新建activity頁面:SecondActivity

布局如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="打開第二個界面" />

</RelativeLayout>

添加點擊事件

    public void click(View view) {
        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);
    }

運行項目,觀察logcat打印信息

當出現第一個界面的時候,依次打印的是:onCreate->onStart->onResume

當點擊按鈕的時候,打印:onPause->onStop

接下來添加第三個按鈕

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:onClick="click2"
        android:text="打開第三個界面" />

添加對應跳轉的activity,在清單文件中添加theme

        <!-- android:theme="@android:style/Theme.Dialog" Activity 會顯示成對話框的形式 -->
         <activity 
            android:theme="@android:style/Theme.Dialog"
            android:name=".ThirdActivity"
            android:label="@string/activity03" 
            ></activity>

點擊按鈕的時候觀察logcat打印信息

獲取更多C語言與算法相關知識,關注公眾號:“csuanfa”

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved