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

歡迎訪問 生活随笔!

生活随笔

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

Android

Android 第三课 Activity的生命周期

發布時間:2023/12/10 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 第三课 Activity的生命周期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?新建項目ActivityLifeCycleTest,創建主活動后,再新建兩個子活動--NormalActivity和DialogActivity。

現在活動及其對應布局文件創建完畢。

編輯normal_layout.xml文件,代碼如下:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"> <TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content" android:text="This is a normal activity"/> </LinearLayout>

只是簡單是使用了一個TextView,用來顯示一行文字。

然后編輯dialog_layout.xml,代碼如下:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content" android:text="This is a dialog activity"/> </LinearLayout>

從名字上可以看出來這兩個子活動一個是普通的活動,一個是對話框式的活動。現在我們來修改這個對話框式的活動,打開AndroidManifest.xml文件的<activity>標簽,并修改。代碼如下:

<activity android:name=".DialogActivity"android:theme="@style/Theme.AppCompat.Dialog"> </activity>

這里是活動的注冊碼,并且只給DialogActivity的代碼進行了修改,給它使用了android:theme屬性,這是用來給當前活動指定主題的,Android系統內置了很多主題可以選擇,這里是讓DialogActivity使用對話框式的主題。

接下來,重新定制主活動的布局,將里面的代碼替換成如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/start_normal_activity"android:layout_width="match_parent"android:layout_height="wrap_content" android:text = "Start NormalActivity"/><Buttonandroid:id="@+id/start_dialog_activity"android:layout_width="match_parent"android:layout_height="wrap_content" android:text= "Start DialogActivity"/> </LinearLayout>

只是添加了兩個按鈕,分別對應兩個子活動。

最后修改MainActivity中的代碼,如下所示:

package com.example.activitylifecycletest; 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 { public static final String TAG = "MainActivity";?//定義當前類名為常量@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button StartNormalActivity = (Button) findViewById(R.id.start_normal_activity);Button StartDialogActivity = (Button) findViewById(R.id.start_dialog_activity);StartNormalActivity.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(MainActivity.this,NormalActivity.class);startActivity(intent);}});StartDialogActivity.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(MainActivity.this,DialogActivity.class);startActivity(intent); }})} @Overrideprotected void onStart() {super.onStart();Log.d(TAG,"onStart");}@Overrideprotected void onResume() {super.onResume();Log.d(TAG,"onResume");}@Overrideprotected void onPause() {super.onPause();Log.d(TAG,"onPause");}@Overrideprotected void onStop() {super.onStop();Log.d(TAG,"onStop");}@Overrideprotected void onDestroy() {super.onDestroy();Log.d(TAG,"onDestroy");} }

在onCreate()方法中,我們分別為兩個按鈕定義了點擊事件,點擊按鈕會啟動相應的Activity,然后會在Activity的7個回調方法中分別打印了一句話,這樣更好的觀察理解活動的生命周期。

  • 倘若活動被回收了怎么辦?

假設有一個活動A,在活動A的基礎上啟動了活動B,那么活動A進入了Stop狀態,這時突然由于系統內存不存,將活動A回收了,然后用戶按下Back鍵返回活動A,會出現什么情況呢?還是會正常啟動A的,只不過并不是執行onReStart()方法,而是會執行活動A的onCreate()方法,因為活動A在這種情況會被重新創建一次。那么加入活動A本來是存在臨時數據和狀態的,那么重新創建一次,什么都不沒有顯示了,這不是令人很難過嗎?

經查閱文檔。Activity中還提供了一個onSaveInstanceState()回調方法,這個方法可以保證活動在回收之前一定被調用,因此這個方法來解決活動被回收時,臨時數據得不到保存的問題。

onSaveInstanceState()方法會攜帶一個Bundle類型的參數,Bundle提供了一系列的方法用于保存數據,例如可以使用putString()來保存字符串,使用putInt()保存整型,每個保存方法有兩個參數,一個是鍵,用于后面從Bundle中取值,第二個參數是真正要保存的內容。這么看來,鍵和保存的內容是一一對應的吧。

在MainActivity中添加如下代碼:

@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);String tempData = "Something you just typed";outState.putString("data_key",tempData);}我們是在MainActivity文件中重寫了這個方法。那么數據是保存好了,但是我們應該在哪里恢復呢?我們之前一直使用的onCreate()方法其實也有一個Bundle類型的參數。這個參數一般情況是null,但是如果在活動被回收之前有通過onSaveInstanceState()方法來保存數據的話,這個參數就會帶有之前所保存的全部數據,我們只需要修改MainActivity的onCreate()方法,代碼如下: protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d(TAG,"onCreate");setContentView(R.layout.activity_main);if(savedInstanceState !=null){String tempData = savedInstanceState.getString("data_key");Log.d(TAG,tempData);}Button StartNormalActivity = (Button) findViewById(R.id.start_normal_activity);Button StartDialogActivity = (Button) findViewById(R.id.start_dialog_activity);StartNormalActivity.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(MainActivity.this,NormalActivity.class);startActivity(intent);}});StartDialogActivity.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(MainActivity.this,DialogActivity.class);startActivity(intent);}});} Intent還可以結合Bundle一起用于傳輸數據,首先可以把需要傳遞的數據都保存在Bundle對象中,然后再將Buddle對象存放在Intent里。到了目標活動之后先從Intent中取出Bundle,在從Bundle中一一取出數據。




總結

以上是生活随笔為你收集整理的Android 第三课 Activity的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 午夜免费福利在线 | 亚洲偷偷| 色女人在线 | 成人自拍在线 | 久久精品在线观看 | 国产第3页 | 九色首页 | 国产一区视频在线播放 | 最新日韩精品 | 丰满岳乱妇国产精品一区 | 国产一级高清视频 | 农民工hdxxxx性中国 | 奇米影视av | 第四色影音先锋 | 亚洲一区你懂的 | 久久青娱乐 | 精品国产乱码久久久久久久 | 韩日视频一区 | 亚洲成人99| 日韩午夜在线观看 | 91黄色影视| 久久久精品久久久久 | 小视频在线 | 好姑娘在线观看高清完整版电影 | 久草福利资源站 | 黄色网战在线观看 | 老熟妇一区二区三区啪啪 | 日韩欧美国产视频 | 自拍偷拍中文字幕 | 午夜激情在线观看视频 | 色开心 | 婷婷激情六月 | 久久国产热视频 | 久久综合伊人77777麻豆 | www.精品一区| 免费看国产曰批40分钟粉红裤头 | 亚洲精品在线观看免费 | 无套内谢的新婚少妇国语播放 | av免费网| 伊人免费 | 欧美日韩一区电影 | 日韩成人片 | 成年人在线观看视频网站 | 中文字幕手机在线视频 | 伊人涩涩 | 神马午夜一区 | 羞羞动漫在线观看 | 97人妻一区二区精品视频 | 日韩一区二区三区精品 | 国产欧美日韩亚洲 | 免费看片视频 | 中文字幕乱码无码人妻系列蜜桃 | 亚洲欧美中日韩 | 大桥未久av一区二区三区中文 | 色妻影院| 欧美人与性动交xxⅹxx | 午夜视频污 | 久久国内偷拍 | 黄视频网站免费看 | 蜜桃av色偷偷av老熟女 | 91成人在线观看喷潮动漫 | 麻豆乱淫一区二区三区 | 亚洲不卡一区二区三区 | 国产欧美日韩精品一区 | 久久免费看少妇高潮 | 亚洲不卡视频在线观看 | 一个色综合网 | 激情一区 | 91激情在线观看 | 日韩成人久久 | 假日游船法国满天星 | 国产第一亚洲 | 天堂中文资源在线观看 | 日韩黄色大全 | 老司机久久精品视频 | 亚洲乱码国产乱码精品精 | 奇米婷婷 | 在线视频亚洲欧美 | www视频免费在线观看 | 成人综合区一区 | 无码精品在线视频 | 黄色成人小视频 | av在线影片| 人妻少妇偷人精品无码 | 欧美大波大乳巨大乳 | 日产精品一区二区 | 91私密视频 | 亚洲天堂视频网站 | 91麻豆精品91久久久久同性 | 日韩在线看片 | 国内自拍一区 | 波多野结衣在线观看一区 | 亚洲hh| 亚洲女人初尝黑人巨大 | 亲切的金子片段 | 精品久久久久成人码免费动漫 | 日日干干| 日本xxxx色 | 国产精品宾馆在线 |