編輯:關於android開發
新建項目,MainActivity代碼如下:
package com.wuyudong.lifecycle; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println("onCreate"); } @Override protected void onDestroy() { super.onDestroy(); System.out.println("onDestroy"); } @Override protected void onPause() { super.onPause(); System.out.println("onPause"); } @Override protected void onResume() { super.onResume(); System.out.println("onResume"); } @Override protected void onStart() { super.onStart(); System.out.println("onStart"); } @Override protected void onStop() { super.onStop(); System.out.println("onStop"); } }
運行項目,在logcat中查看打印信息:
關閉應用後,打印其他的銷毀信息
什麼是生命周期?
對象從創建到銷毀的階段,必須會執行的方法,這些方法就是生命周期的回調
activity生命周期:
new - gc
oncreate() activity被創建的時候調用的方法
ui界面的初始化 setContentView()
onStart() activity的界面用戶可見
更新ui的操作,播放視頻
onDestroy() activity被銷毀的時候調用的方法
界面退出之前的掃尾操作,短信發送器,退出前數據的保存。
onStop() activity的界面用戶不再可見
界面不可見,暫停視頻播放
onResume()
界面獲取到了焦點,按鈕可以相應點擊事件
onPause()
界面失去了焦點,按鈕就不可以相應點擊事件
onRestart()
activity被最小化了,並沒有銷毀,如果下次再去打開這個activity
重新用戶界面可見
Activity有三個狀態:
1、當它在屏幕前台時(位於當前任務堆棧的頂部),它是激活或運行狀態。它就是響應用戶操作的Activity。
2、當它失去焦點但仍然對用戶可見時(如右圖),它處於暫停狀態。即在它之上有另外一個Activity。這個Activity也許是透明的,或者沒有完全覆蓋全屏,所以被暫停的Activity仍對用戶可見。暫停的Activity仍然是存活狀態(它保留著所有的狀態和成員信息並保持和窗口管理器的連接),但系統處於極低內存時仍然可以殺死這個Activity。
3、完全被另一個Activity覆蓋時則處於停止狀態。它仍然保留所有的狀態和成員信息。然而對用戶是不可見的,所以它的窗口將被隱藏,如果其它地方需要內存,則系統經常會殺死這個Activity。
當Activity從一種狀態轉變到另一種狀態時,會調用以下保護方法來通知這種變化:
void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
這七個方法定義了Activity的完整生命周期。實現這些方法可以幫助我們監視其中的三個嵌套生命周期循環:
1、Activity的完整生命周期自第一次調用onCreate()開始,直至調用onDestroy()為止。Activity在onCreate()中設置所有“全局”狀態以完成初始化,而在onDestroy()中釋放所有系統資源。例如,如果Activity有一個線程在後台運行從網絡上下載數據,它會在onCreate()創建線程,而在 onDestroy()銷毀線程。
2、Activity的可視生命周期自onStart()調用開始直到相應的onStop()調用結束。在此期間,用戶可以在屏幕上看到Activity,盡管它也許並不是位於前台或者也不與用戶進行交互。在這兩個方法之間,我們可以保留用來向用戶顯示這個Activity所需的資源。例如,當用戶不再看見我們顯示的內容時,我們可以在onStart()中注冊一個BroadcastReceiver來監控會影響UI的變化,而在onStop()中來注消。onStart() 和 onStop() 方法可以隨著應用程序是否為用戶可見而被多次調用。
3、Activity的前台生命周期自onResume()調用起,至相應的onPause()調用為止。在此期間,Activity位於前台最上面並與用戶進行交互。Activity會經常在暫停和恢復之間進行狀態轉換——例如當設備轉入休眠狀態或者有新的Activity啟動時,將調用onPause() 方法。當Activity獲得結果或者接收到新的Intent時會調用onResume() 方法。關於前台生命周期循環的例子請見PPT下方備注欄。
接下來實踐一下:
新建項目,新建activity頁面:SecondActivity
布局如下:
<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" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="打開第二個界面" /> </RelativeLayout>
添加點擊事件
public void click(View view) { Intent intent = new Intent(this, SecondActivity.class); startActivity(intent); }
運行項目,觀察logcat打印信息
當出現第一個界面的時候,依次打印的是:onCreate->onStart->onResume
當點擊按鈕的時候,打印:onPause->onStop
接下來添加第三個按鈕
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:onClick="click2" android:text="打開第三個界面" />
添加對應跳轉的activity,在清單文件中添加theme
<!-- android:theme="@android:style/Theme.Dialog" Activity 會顯示成對話框的形式 --> <activity android:theme="@android:style/Theme.Dialog" android:name=".ThirdActivity" android:label="@string/activity03" ></activity>
點擊按鈕的時候觀察logcat打印信息
獲取更多C語言與算法相關知識,關注公眾號:“csuanfa”
ArcGIS for Android地圖控件的5大常見操作轉,arcgisandroidhttp://blog.csdn.net/arcgis_mobile/articl
手機產品設計之用戶引導,手機產品設計引導在手機產品的設計過程中,由於手機界面的承載能力有限,產品功能的不斷膨脹,必須要在用戶打開應用之後告知他某些新奇的功能,引導他完成某
ELK Stack最新版本測試二配置篇閱讀本文前請浏覽詳細配置如下:http://blog.chinaunix.net/uid-25057421-id-5567766.h
Android 離線緩存的快速實現 離線緩存是指在有網絡的狀態下將從服務器獲取的網絡數據,如Json 數據緩存到本地,在斷網的狀態下啟動APP時讀取本地緩存數據顯示在