activity的生命周期圖
2 android生命周期中涉及到的幾個過程
1.啟動activity:系統會先調用oncreate方法,然後調用onstart方法,最後調用onresume,activity進入運作狀态。
2. 目前activity被其他activity覆寫其上或被鎖屏,系統會調用onpause方法,暫停目前activity的執行。
3.目前activity由被覆寫狀态回到前台或解鎖鎖屏:系統會調用onresume方法,再次進入運作狀态。
4.目前activity轉到的activity界面或按home鍵回到主屏,自身退居背景:系統會先調用onpause方法,然後調用onstop方法。進入停滞狀态。
5.使用者後退回到此activity:系統會先後調用onrestart方法,然後調用onstart方法,最後調用onresume方法,再次進入運作狀态。
6.目前activity處于被覆寫狀态或者背景不可見狀态,即第2步和第4步,系統記憶體不足,殺死目前activity,而後使用者退回目前activity,再次調用oncreate方法、onstart方法、onresume方法,進入運作狀态。
7.當使用者退出目前activity:系統先調用onpause方法,然後調用onstop方法,最後調用ondestory方法,結束目前activity.
3.編寫如下程式進行測試
4 android清單檔案如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.itheima.lifecycle"
android:versioncode="1"
android:versionname="1.0" >
<uses-sdk
android:minsdkversion="8"
android:targetsdkversion="19" />
<application
android:allowbackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/apptheme" >
<activity
android:name="com.itheima.lifecycle.mainactivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.main" />
<category android:name="android.intent.category.launcher" />
</intent-filter>
</activity>
android:theme="@android:style/theme.translucent"
android:name="com.itheima.lifecycle.secondactivity">
</application>
</manifest>
5 布局檔案activity_main.xml
<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"
tools:context=".mainactivity" >
<button
android:onclick="click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centervertical="true"
android:layout_centerhorizontal="true"
android:text="開啟第二個界面"/>
</relativelayout>
布局檔案:activity_second.xml
<relativelayout
xmlns:android="http://schemas.android.com/apk/res/android"
tools:context=".secondactivity" >
<textview
android:text="我是第二個界面"/>
6 mainactivity的代碼如下:
package com.itheima.lifecycle;
import android.content.intent;
import android.os.bundle;
import android.support.v7.app.actionbaractivity;
import android.view.view;
public class mainactivity extends actionbaractivity {
/**
* 被建立的時候調用的方法
*/
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
system.out.println("oncreate");
}
* 被銷毀的時候調用的方法
protected void ondestroy() {
system.out.println("ondestroy");
super.ondestroy();
* 當activity界面可見的時候調用的方法
* activity建立或者從背景重新回到前台時候被調用
protected void onstart() {
system.out.println("onstart");
super.onstart();
* activity從背景重新回到前台時被調用
protected void onrestart() {
super.onrestart();
* 當activity界面使用者不可見的時候調用的方法
protected void onstop() {
system.out.println("onstop");
super.onstop();
* 界面開始擷取到焦點對應的方法。
* (界面按鈕可以被點選,文本框可以輸入内容)
*
* activity建立或者從被覆寫、背景重新回到前台時被調用
protected void onresume() {
system.out.println("onresume");
super.onresume();
* 界面失去焦點對應的方法(暫停)
* (按鈕不可被點選,文本框不可,但是界面輸入内容,使用者仍然能看見)
protected void onpause() {
system.out.println("onpause");
super.onpause();
//可能在執行完onpause或onstop後,系統資源緊張将activity殺死,是以有
//必要在此儲存持久資料
* 視窗獲得或失去焦點是被調用,在onresume之後或onpause之後
public void onwindowfocuschanged(boolean hasfocus) {
system.out.println("onwindowfocuschanged");
super.onwindowfocuschanged(hasfocus);
* activity被系統殺死是被調用。
* 例如:螢幕方向改變時,activity被銷毀在重建;目前activity處于背景,系統資源
* 緊張将其殺死。
* 另外,當跳轉到其他activity或者按home鍵回到主屏是該方法也被調用,系統為了儲存
* 目前view元件,在onpause之後前被調用。
protected void onsaveinstancestate(bundle outstate) {
system.out.println("onsaveinstancestate");
super.onsaveinstancestate(outstate);
* activity被系統殺死後再重建時被調用
* 例如:螢幕方向改變時,activity被銷毀在重建,目前activity處于背景,系統
* 資源緊張将其殺死,使用者又啟動該activity,這兩種情況下onrestoreinstancestate
* 都被調用,在onstart之後。
protected void onrestoreinstancestate(bundle savedinstancestate) {
system.out.println("onrestoreinstancestate");
super.onrestoreinstancestate(savedinstancestate);
public void click(view view) {
intent intent = new intent(this,secondactivity.class);
startactivity(intent);
}
7 secondactivity的内容如下:
package com.itheima.lifecycle;
import android.app.activity;
import android.os.bundle;
public class secondactivity extends activity {
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_second);
}