日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android:日常学习笔记(6)——探究活动(3)

發布時間:2024/4/17 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android:日常学习笔记(6)——探究活动(3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android:日常學習筆記(6)——探究活動(3)

活動的生命周期

返回棧

  Android中的活動是可以疊加的,我們每啟動一個新活動,就會覆蓋在原來的活動上,點擊Back以后銷毀最上面的活動,下面的活動就會重新顯現出來。Android是使用任務(Task)來管理活動的一個任務就是一組存放在棧里的活動的集合。
  默認情況下,每當我們啟動一個新的活動,他會在返回棧中入棧,并處于棧頂位置。而每當我們按下Back或者Finish以后,處于棧頂位置的活動會出棧。

  

活動的狀態

  運行狀態(棧頂的元素)、暫停狀態(不在棧頂但仍然可見,如對話框)、停止狀態(不在棧頂并完全不可見,有可能被系統回收)、銷毀狀態(從返回棧中移除后)。

活動的生存期

? onCreate():他會在活動第一次被調用的時候創建。

? onStart():活動由不可見變為可見時調用。

? onResume():活動準備好與用戶進行交互時調用,此時活動一定位于返回棧的棧頂。并處于運行狀態。

? onPause():在系統準備好去啟動或者恢復另一個活動的時候調用,一般在此將一些消耗CPU的資源釋放掉。

? onStop():這個方法在活動完全不可見的時候調用。

? onDestory():這個方法在活動被銷毀之前調用。

? onRestart():這個方法在活動由停止轉變為運行狀態之前調用,也即是活動被重新啟動了。

體驗活動的生命周期

1.我們新建三個活動
  

說明

  對話框活動我們需要在AndroidManifest中進行設置。?

  

2.在主活動中設置啟動其余活動,且重載生存期方法

package com.example.zy.android2;import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button startNormal = (Button) findViewById(R.id.start_normal_activity);Button startDialog = (Button) findViewById(R.id.start_dialog_activity);startNormal.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, NormalActivity.class);startActivity(intent);}});startDialog.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, DialogActivity.class);startActivity(intent);}});}protected void onStart(){super.onStart();Log.d("Main","onStart");}protected void onResume(){super.onResume();Log.d("Main","onResume");}protected void onPause(){super.onPause();;Log.d("Main","onPause");}protected void onStop(){super.onStop();Log.d("Main","onStop");}protected void onDestroy(){super.onDestroy();Log.d("Main","onDestroy");}protected void onRestart(){super.onRestart();Log.d("Main","onRestart");}} 3.運行程序

我們發現:
當首次運行程序時會打印
  03-19 14:36:27.872 3632-3632/com.example.zy.android2 D/Main: onCreate
  03-19 14:36:27.872 3632-3632/com.example.zy.android2 D/Main: onStart
  03-19 14:36:27.872 3632-3632/com.example.zy.android2 D/Main: onResume
點擊第一個按鈕會打印:
  03-19 14:37:20.270 3632-3632/com.example.zy.android2 D/Main: onPause
  03-19 14:37:20.733 3632-3632/com.example.zy.android2 D/Main: onStop
  說明:由于NormalActivity活動會完全遮擋Main活動,所以這兩個方法完全執行。
返回后打印:
  03-19 14:38:11.040 3632-3632/com.example.zy.android2 D/Main: onRestart
  03-19 14:38:11.041 3632-3632/com.example.zy.android2 D/Main: onStart
  03-19 14:38:11.041 3632-3632/com.example.zy.android2 D/Main: onResume
  說明:由于之前Main活動進入停止狀態,所以onRestart()方法會得到執行,之后又會依次調用onStart()和onResume()。
點擊第二個按鈕
  03-19 14:39:17.338 3632-3632/com.example.zy.android2 D/Main: onPause
  說明:沒有執行onStop,是因為Dialog沒有完全遮擋住MainActivity,此時MainActivity只是進入了暫停狀態,并沒有停止狀態。
返回后打印
  03-19 14:39:21.519 3632-3632/com.example.zy.android2 D/Main: onResume
退出MainActivity
  03-19 14:39:49.763 3632-3632/com.example.zy.android2 D/Main: onPause
  03-19 14:39:49.772 3632-3632/com.example.zy.android2 D/Main: onStop
  03-19 14:39:49.772 3632-3632/com.example.zy.android2 D/Main: onDestroy

活動被回收了怎么辦

   當活動A基礎上啟動了活動B,那么A進入停止狀態,就有可能被系統回收。如果活動A中我們輸入了臨時數據,那么當從活動B返回時,由于重新執行了onCreate()方法,數據將得不到保存。
  Activity提供了一個onSaveInstanceState()回調方法,這個方法可以保證數據回收之前一定被調用,因此我們可以利用這個方法來解決互動被回收時臨時數據得不到保存的問題。

//活動重新創建時,可以判斷是否有Bundle留下來 protected void onCreate(Bundle savedInstanceState) {if(savedInstanceState!=null)Log.d("Main",savedInstanceState.getString("data_key")); } //這個方法在活動被系統回收前一定會被調用 protected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);String tempData = "Something you just typed";outState.putString("data_key",tempData);}

?

轉載于:https://www.cnblogs.com/MrSaver/p/6580655.html

總結

以上是生活随笔為你收集整理的Android:日常学习笔记(6)——探究活动(3)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。