activity生命周期_第1頁
activity生命周期_第2頁
activity生命周期_第3頁
activity生命周期_第4頁
activity生命周期_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、onAestarlf)onPausef)onStop()onD&stroyOActivftyis shutdownThe activitycorner torheThe activitycomes to theforegroundActivitystarts此文于2010-08-03被推薦到(7?用血啊慮no longer visibQ我在前面也曾經講過這方面API ,過于籠統,相信大家看兩分鐘徹底讓你明白Android Activity生命周期(圖文)!收藏CSDN首頁如何被推薦?大家好,今天給大家詳解一下Android中Activity的生命周期,的內容,但是像網上大多數文章一樣,

2、基本都是翻譯Android了,會有一點點的幫助,但是還不能完全吃透,所以我今天特意在重新總結一下首先看一下Android api中所提供的Activity生命周期圖(不明白的,可以看完整篇文章 回頭看一下這個圖,你會明白的):User navigatesback to th&f Process is ( killed JJrOtherapiplicationsonCrtiaieOonSiano1ron ReswmefAnotheract ,in frontrivitycomes theactivityActivity isrunningActivity其實是繼承了Application

3、context這個類,我們可以重寫以下方法,如下代碼 view plaincopy toclipboardprint?01.public class Activity extends Applicationcontext (02. protected void onCreate(Bundle savedInstanceState);03.04.protected void onStart();05.06.protected void onRestart();07.08.protected void onResume();09.10.protected void onPause();11.11.

4、protected void onStop();13.12.protected void onDestroy();13.public class Activity extends ApplicationContext (protected void onCreate(Bundle savedInstanceState);protected void onStart();protected void onRestart();protected void onResume();protected void onPause();protected void onStop();protected vo

5、id onDestroy();為了便于大家更好的理解,我簡單的寫了一個Demo,不明白Activity周期的朋友們,可以親手實踐一下,大家按照我的步驟來。第一步:新建一個Android工程,我這里命名為ActivityDemo.第二步修改ActivityDemo.java(我這里重新寫了以上的七種方法,主要用Log打印),代碼如下:view plaincopy to clipboardprint?01.package com.tutor.activitydemo;02.import android.app.Activity;03.import android.os.Bundle;04.impo

6、rt android.util.Log;05.public class ActivityDemo extends Activity 06.07. private static final String TAG = ActivityDemo;08.09. public void onCreate(Bundle savedInstanceState) 10.super.onCreate(savedInstanceState);11.setContentView(R.layout.main);12.12.Log.e(TAG, start onCreate- );13.15.14.Override15

7、.protected voidonStart() 16.super.onStart();17.Log.e(TAG, start onStart-);18.21.19.Otected voidonRestart() 21.super.onRestart();22.Log.e(TAG, start onRestart);23.27.24.Otected voidonResume() 26.super.onResume();27.Log.e(TAG, start onResume);28.33.29.Otected voi

8、d onPause() 31.super.onPause();32.Log.e(TAG, start onPause);33.39.34.Otected void onStop() 36.super.onStop();37.Log.e(TAG, start onStop);38.45.39.Otected void onDestroy() (41.super.onDestroy();42.Log.e(TAG, start onDestroy- );43.51.44.package com.tutor.activitydemo;import a

9、ndroid.app.Activity;import android.os.Bundle;import android.util.Log;public class ActivityDemo extends Activity (private static final String TAG = ActivityDemo;public void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState);setContentView(R.layout.main);Log.e(TAG, start onCreate

10、-);Overrideprotected void onStart() (super.onStart();Log.e(TAG, start onStart-);Overrideprotected void onRestart() (super.onRestart();Log.e(TAG, start onRestart- );Overrideprotected void onResume() (super.onResume();Log.e(TAG, start onResume-);Overrideprotected void onPause() ( super.onPause();Log.e

11、(TAG, start onPause-);Overrideprotected void onStop() super.onStop();Log.e(TAG, start onStop-);Overrideprotected void onDestroy() super.onDestroy();Log.e(TAG, start onDestroy-);第三步:運行上述工程,效果圖如下(沒什么特別的):IS8ffi1:00PM|Activity DemoHello Worfd, ActivityDemo!核心在Logcat視窗里,如果你還不會用Logcat你可以看一下我的這篇文章Log圖文詳解(

12、Log.v,Log.d,Log.i,Log.w,Log.e), 我們打 開應用 時先后 執行了onCreate()-onStart()-onResume三個方法,看一下LogCat視窗如下:ActivityDemoHello World. ActivityDemo!BACK鍵:當我們按BACK鍵時,我們這個應用程序將結束,這時候我們將先后調用onPause()-onStop()-onDestory()三個方法,如下圖所示:當我們打開應用程序時,比如瀏覽器,我正在瀏覽NBA新聞,看到一半時,我突然想聽歌,這時候我們會選擇按HOME鍵,然后去打開音樂應用程序,而當我們按HOME的時候,Activi

13、ty先后執行了onPause()-onStop()這兩個方法,這時候應用程序并沒有銷毀。如下圖 所示:HOME鍵:而當我們再次啟動ActivityDemo應用程序時,則先后分別執行了onRestart()-onStart()-onResume()三個方法,如下圖所示:這里我們會引出一個問題,當我們按HOME鍵,然后再進入ActivityDemo應用時,我們的應用的狀態應該是和按HOME鍵之前的狀態是一樣的,同樣為了方便理解,在這里我將ActivityDemo的代碼作一些修改,就是增加一個EditText。第四步 修改main.xml布局文件(增加了一個EditText),代碼如下:view p

14、laincopy to clipboardprint?01.02.07.12.17.第五步:然后其他不變,運行ActivityDemo程序,在EditText里輸入如Frankie字符串(如下圖:)這時候,大家可以按一下HOME鍵,然后再次啟動ActivityDemo應用程序,這時候EditText里并沒有我們輸入的Frankie字樣,如下圖:這顯然不能稱得一個合格的應用程序,所以我們需要在Activity幾個方法里自己實現,如下第六步所示:第六步修改 ActivityDemo.java 代碼如下:view plaincopy to clipboardprint?01.package com.

15、tutor.activitydemo;02.import android.app.Activity;03.import android.os.Bundle;04.import android.util.Log;05.import android.widget.EditText;06.public class ActivityDemo extends Activity (07.08. private static final String TAG = ActivityDemo;09.private EditText mEditText;10.定義一個String類型用來存取我們EditText輸

16、入的值11.private String mString;12.public void onCreate(Bundle savedInstanceState) (13.super.onCreate(savedInstanceState);14.setContentView(R.layout.main);15.mEditText = (EditText)findV iewById(R.id.editText);16.Log.e(TAG, start onCreate- );17.18.18.Otected voidonStart() (20.super.onStart(

17、);21.Log.e(TAG, start onStart-);22.23.當按HOME鍵時,然后再次啟動應用時,我們要恢復先前狀態24.Otected void onRestart() (26.super.onRestart();27.mEditText.setText(mString);28.Log.e(TAG, start onRestart-);29.31.30.Otected void onResume() (32.super.onResume();33.Log.e(TAG, start onResume- );34.37.35.當

18、我們按HOME鍵時,我在onPause方法里,將輸入的值賦給mString36.Otected void onPause() (38.super.onPause();39.mString = mEditText.getText().toString();40.Log.e(TAG, start onPause-);41.45.42.Otected void onStop() (44.super.onStop();45.Log.e(TAG, start onStop- );46.51.47.Otected void on

19、Destroy()(49.super.onDestroy();50.Log.e(TAG, start onDestroy-);51.57.52.package com.tutor.activitydemo;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.EditText;public class ActivityDemo extends Activity private static final String TAG = ActivityDemo

20、;private EditText mEditText;定義一個String類型用來存取我們EditText輸入的值private String mString;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);mEditText = (EditText)findView ById(R.id.editText);Log.e(TAG, start onCreate-);Overrideprotected void onStart() super.onStart();Log.e(TAG, start onStart-);/當按HOME鍵時,然后再次啟動

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論