中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android非異常情況下Activity的生命周期有哪些

發布時間:2021-01-18 15:09:09 來源:億速云 閱讀:162 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關Android非異常情況下Activity的生命周期有哪些,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

Activity非異常情況下的生命周期是指,用戶正常參與UI交互的情況下,Activity所經過的生命周期的改變;一般情況下,Activity會經過以下幾個生命周期。

1、OnCreate(): 表示Activity正在創建,這個是生命周期的第一個方法,該方法只調用一次,在這個方法中,一般做變量初始化的操作,例如綁定一個Button控件的Id等。

2、onRestart(): 表示Activity正在重新啟動,一般情況下,如果最前面的Activity從不可見狀態變為可見狀態時,onRestart()這個方法都會被調用,一般情況下都是用戶操作導致的;例如,當前這個Activity叫A,用戶啟動了一個新的Activity叫B,這時A就會暫停,也就是onPause()和 onStop()被調用了,接著用戶又回到了這個A時,就會出現這種情況。

3、onStart(): 表示Activity正在被啟動,將要開始,這時的Activity是可見狀態了,但是沒有出呈現到前臺的,還不能和用戶打交道,其實Activity已經顯示出來了,只是我們看不到而已

4、onResume(): 表示Activity已經可見了,也就是呈現在前臺上,即我們肉眼能夠看得見了。我們要留意這個onResume()和onStart()的區別,onStart()和onResume()都表示是Activity的可見狀態,但是調用onStart()方法時Activity是在后臺,而調用onResume()方法時Activity是在前臺的。

5、onPause(): 表示Activity正在停止,這時候Activity的狀態是不可見的,但是還是顯示在前臺的;一般情況下,下一個生命周期的方法onStop()就會被調用。在這里可以做一些存儲數據的操作,但不可以過于耗時,因為會影響Activity顯示的效果。

6、onStop(): 表示Activity即將停止,這時候Activity的狀態是不可見的,也不是顯示在前臺上了,在這里可以做一些稍微重量級的回收工作,也不可以太耗時。

7、onDestroy(): 表示Activity即將被銷毀,這是Activity生命周期的最后一個方法,在這里可以做一些資源的釋放。

下面以一張圖展示非異常情況下生命周期調用的方法

Android非異常情況下Activity的生命周期有哪些

好了,前面分析了那么多,我們來寫一個小demo看一下效果。
(1)、首先創建第一個Activity,名叫ActivityA,代碼如下所示:

var activityName: String? = "ActivityA"
 val TAG: String? = "Activity"
 override fun onCreate(savedInstanceState: Bundle?) {
   super.onCreate(savedInstanceState)
   setContentView(R.layout.activity_a)
   Log.d(TAG,activityName + "---------onCreate")
 }

 override fun onRestart() {
   super.onRestart()
   Log.d(TAG,activityName + "---------onRestart")
 }

 override fun onStart() {
   super.onStart()
   Log.d(TAG,activityName + "---------onStart")
 }

 override fun onResume() {
   super.onResume()
   Log.d(TAG,activityName + "---------onResume")
 }

 override fun onPause() {
   super.onPause()
   Log.d(TAG,activityName + "---------onPause")
 }

 override fun onStop() {
   super.onStop()
   Log.d(TAG,activityName + "---------onStop")
 }

 override fun onDestroy() {
   super.onDestroy()
   Log.d(TAG,activityName + "---------onDestroy")
 }

 public fun onClick(v: View) {
   var clazz = ActivityB:: class.java
   var it: Intent = Intent(this,clazz)
   startActivity(it)
 }

對應的ActivityA的activity_a.xml文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:orientation="vertical"
  android:layout_height="match_parent">
  <TextView
    android:layout_width="match_parent"
    android:gravity="center"
    android:text="這是一個Activity,名字叫A"
    android:layout_height="wrap_content" />
  <Button
    android:layout_width="match_parent"
    android:text="點擊此按鈕,可啟動新的Activity"
    android:onClick="onClick"
    android:layout_height="wrap_content" />
</LinearLayout>

(2)、創建另外一個Activity,名叫ActivityB,如下所示:

val TAG: String? = "Activity"
var activityName: String? = "ActivityB"
override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_b)
  Log.d(TAG,activityName + "---------onCreate")
}

override fun onRestart() {
  super.onRestart()
  Log.d(TAG,activityName + "---------onRestart")
}

override fun onStart() {
  super.onStart()
  Log.d(TAG,activityName + "---------onStart")
}

override fun onResume() {
  super.onResume()
  Log.d(TAG,activityName + "---------onResume")
}

override fun onPause() {
  super.onPause()
  Log.d(TAG,activityName + "---------onPause")
}

override fun onStop() {
  super.onStop()
  Log.d(TAG,activityName + "---------onStop")
}

override fun onDestroy() {
  super.onDestroy()
  Log.d(TAG,activityName + "---------onDestroy")
}

ActivityB對應的activity_b.xml的文件如下所示~~

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:orientation="vertical"
 android:layout_height="match_parent">
 <TextView
   android:layout_width="match_parent"
   android:text="這是一個Activity,名字叫B"
   android:gravity="center"
   android:layout_height="wrap_content" />
</LinearLayout>

第一次運行的結果如下所示~~~~

Android非異常情況下Activity的生命周期有哪些

以下是相應的日志打印

01-08 11:48:39.068 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onCreate
01-08 11:48:39.069 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onStart
01-08 11:48:39.069 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onResume

點擊“點擊此按鈕,可啟動新的Activity”按鈕,效果圖如下所示

Android非異常情況下Activity的生命周期有哪些

相應的日志如下所示:

01-08 11:57:44.455 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onPause
01-08 11:57:44.465 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onCreate
01-08 11:57:44.466 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onStart
01-08 11:57:44.466 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onResume
01-08 11:57:44.843 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onStop

點擊返回鍵,返回ActivityA,日志如下所示:

01-08 12:22:40.318 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onPause
01-08 12:22:40.319 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onRestart
01-08 12:22:40.319 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onStart
01-08 12:22:40.319 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityA---------onResume
01-08 12:22:41.125 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onStop
01-08 12:22:41.125 3021-3021/activitylifecycle.xe.com.activitylifecycle D/Activity: ActivityB---------onDestroy

以上就是Android非異常情況下Activity的生命周期有哪些,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽阳县| 永城市| 湘潭市| 靖州| 格尔木市| 怀柔区| 天水市| 霍州市| 资阳市| 福安市| 东海县| 尖扎县| 石首市| 赞皇县| 阳新县| 女性| 资溪县| 芷江| 乡宁县| 五大连池市| 朝阳区| 滦平县| 容城县| 孝义市| 舟曲县| 托克逊县| 灯塔市| 灵丘县| 友谊县| 吉林市| 屯留县| 洪洞县| 榆林市| 仁化县| 洛阳市| 北票市| 德保县| 瑞金市| 长阳| 信阳市| 马尔康县|