国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

32.activity的生命周期

2019-11-09 18:09:55
字體:
來源:轉載
供稿:網友

什么是activity

Activity是安卓四大組件之一(還有Service、BroadcastReceiver、ContentPRovider)

acivity的生命周期如下:

onCreate:Activity創建的時候被調用onStart:Activity能被用戶看見,但是沒有獲得焦點onResume:Activity獲得焦點,此時Activity成為前臺ActivityonPause:Activity失去焦點,但是依然可見onStop:Activity不可見,此時Activity成為后臺ActivityonDestroy:Activity被銷毀內存不足時,系統會優先殺死后臺Activity所在的進程,都殺光了,如果內存還是不足沒那么就會殺死在暫停狀態的Activity所在的進程,如果還是不夠,有可能殺死前臺進程。如果有多個后臺進程,在選擇殺死目標時,采用最近少用使用算法(LRU)

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。

參考代碼如下(通過兩個activity之間的跳轉來查看activity的生命周期):

創建第一個activity

<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"     android:orientation="vertical"    >    <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="第一個activity"        />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="跳轉"         android:onClick="click"        /></RelativeLayout>
package com.ldw.lifecycle;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;public class SecondActivity extends Activity {	@Override	protected void onCreate(Bundle savedInstanceState){		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_second);				System.out.println("onCreate方法被調用");	}		@Override	protected void onStart(){		super.onStart();		System.out.println("onStart方法調用");	}		@Override	protected void onResume(){		super.onResume();		System.out.println("onResume方法調用");	}		@Override	protected void onPause(){		super.onPause();		System.out.println("onPause方法調用");	}		@Override	protected void onStop(){		super.onStop();		System.out.println("onStop方法調用");	}		@Override	protected void onDestroy(){		super.onDestroy();		System.out.println("onDestroy方法調用");	}		@Override	protected void onRestart(){		super.onRestart();		System.out.println("onRestart方法調用");	}}

創建第二個activity

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >        <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="第二個activity"        />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="跳轉到第一個activity"         android:onClick="click1"        /></LinearLayout>
package com.ldw.lifecycle;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;public class SecondActivity extends Activity {	@Override	protected void onCreate(Bundle savedInstanceState){		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_second);				System.out.println("第二個onCreate方法被調用");	}		public void click1(View v){		Intent intent = new Intent(this, MainActivity.class);		startActivity(intent);	}		@Override	protected void onStart(){		super.onStart();		System.out.println("第二個onStart方法調用");	}		@Override	protected void onResume(){		super.onResume();		System.out.println("第二個onResume方法調用");	}		@Override	protected void onPause(){		super.onPause();		System.out.println("第二個onPause方法調用");	}		@Override	protected void onStop(){		super.onStop();		System.out.println("第二個onStop方法調用");	}		@Override	protected void onDestroy(){		super.onDestroy();		System.out.println("第二個onDestroy方法調用");	}		@Override	protected void onRestart(){		super.onRestart();		System.out.println("第二個onRestart方法調用");	}}

Activity啟動模式標準模式:默認就是,不用設置singleTop:如果站定已經是該activity,就無法再啟動,如果棧頂不是,那么就會啟動。singleTask:如果該activity沒有啟動過,會啟動并跳轉到該activity,即該activity會出現在棧頂,如果該activity啟動過,但不在棧頂,那么再次啟動時會返回到該activity,即把該activity上方所有的activity都銷毀。對于singleTask的activity,在任務棧中,永遠只有一個該activity實例。singleInstance:該activity啟動時,會在新的任務站中啟動,并且只會啟動一次,以后再啟動該activity時,其實知識把該activity所在的任務棧移動到前臺。單例模式的activity,內中永遠只有一個,10個應用啟動單例模式的activity,都只是把該activity所在的任務棧移動到前臺。android橫豎屏切換的時候會觸發生命周期的方法,設置一下可以不用出發生命周期的方法android:configChanges="orientation|keyboardHidden|screenSize"orientation:水平豎直切換的時候不觸發生命周期方法keyboardHidden:鍵盤影藏的時候不觸發生命周期的方法screenSize:屏幕大小變化的時候不觸發生命周期的方法。

參考博客:http://blog.csdn.net/liuhe688/article/details/6733407


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 叙永县| 板桥市| 兴海县| 黔西| 玛曲县| 石狮市| 海原县| 东乡| 余江县| 惠来县| 冀州市| 灵丘县| 南陵县| 阜宁县| 扬州市| 阿克苏市| 彰武县| 丰台区| 盘山县| 长顺县| 威信县| 宁强县| 石渠县| 信阳市| 友谊县| 白玉县| 长武县| 阿拉善右旗| 长顺县| 榆树市| 赤峰市| 青海省| 江源县| 拉萨市| 定州市| 响水县| 漯河市| 纳雍县| 曲水县| 房山区| 调兵山市|