編輯:關於Android編程
由於接近放假,公司在趕項目所以前段LP比較忙,沒什麼時間總結和寫博客,只是准備睡覺的時候看看書,每天看的不算多,大概10多頁左右吧,不過每天堅持如此的話那也是一個龐大的數字。
今天LP的任務完成了,在領導還沒分配任務之前再發布一篇關於Activity的博文..........
上一篇跟大家分享了Android的發展史、系統框架、還有Android的四大組件,下面LP就為大家介紹下四大組件之一的Activity。
知道了Android的歷史之後,有沒有讓Android那種打不死的精神打動了,如果有的話就趕緊動身來學Android吧..
行了,廢話不多說 Let's go
說到活動相信就算沒有android基礎的人都知道活動是個什麼東西,因為它會經常出現在我們的身邊,但是說到Activity,那就不一定了,不過懂一點英語的人直接翻譯過來也知道是活動的意思,其實Android的活動和現實生活中的活動很相似,也可以理解為現實生活中的活動,我們正式開始吧。
說到Android的Activity,它到底是個什麼東西呢? 它就是Android系統中的一個組件,專門負責與用戶交互的,用戶看到的每一個界面就是一個活動。
在Android中,Activity有基本的四種狀態
1.運行狀態 active/running
處於屏幕的最前端或者正在和用戶交互著,稱為運行狀態/激活狀態
2.暫停狀態 Paused
當前activity失去焦點,被一個窗口或者非全屏的東西遮住一點點和被另一個透明的activity覆蓋的時候,稱為暫停狀態
3.停止狀態 Stoped
當前activity完全看不到了,稱為停止狀態
4.殺死狀態 Killed
當activity處於“暫停狀態” Or “停止狀態”,這時候系統就可以對當前的activity從內存中刪除或者終止它的進程,還有就是當系統內存不足的時候也會執行前者動作。
如果看完上面的還不能理解,那麼你就可以理解為看電影,那部電影就是當前的activity.
1.電影正在播放的時候,稱為運行狀態
2.當我們點擊暫停按鈕的時候,屏幕不是變暗了嗎?或者出現一個小廣告,這個就可以理解為被另一個全屏透明的東西遮住和非全屏的小廣告,這個就是暫停狀態了
3.看港劇看多了,不想看了,就換部日本動作片來看,這時港劇不是看不到了嗎?或者電腦直接黑屏了,反正看不到港劇,也就是當前的activity。這些都可以稱為 停止狀態
4.就是不想看電影了,直接手動把播放器關掉,處於暫停或者停止狀態,內存不足的時候系統會自動關掉播放器
還不明白話,先不用鑽牛角尖,先往下看,往後會慢慢的明白的.........
activity是由棧來管理的,先進後出,後進先出。每一個用戶能看到的activity都是處於棧頂的,當內存不足的時候,棧裡面最底下的那個activity就會被回收,直接上圖最明了
這個我就不多說了,直接開始..
官方生命周期圖,LP動了點手腳:
圖看完了,緊接著是代碼:
1 package com.leo.writeblog; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.util.Log; 6 7 public class MainActivity extends Activity { 8 private final String TAG = MainActivity; 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 } 14 @Override 15 protected void onStart() { 16 super.onStart(); 17 Log.i(TAG, onStart); 18 } 19 @Override 20 protected void onResume() { 21 super.onResume(); 22 Log.i(TAG, onResume); 23 } 24 @Override 25 protected void onRestart() { 26 super.onRestart(); 27 Log.i(TAG, onRestart); 28 } 29 @Override 30 protected void onPause() { 31 super.onPause(); 32 Log.i(TAG, onPause); 33 } 34 @Override 35 protected void onStop() { 36 super.onStop(); 37 Log.i(TAG, onStop); 38 } 39 @Override 40 protected void onDestroy() { 41 super.onDestroy(); 42 Log.i(TAG, onDestroy); 43 } 44 }View Code
首次運行的日志如下:
按返回鍵退出的時候日志如下:
按小房子鍵的時候日志如下:
從新返回應用程序的時候日志如下:
還有就是當activity還可見的時候,也就是彈出小窗口,或者透明的activity的時候,只會執行 onPause方法,當activity再次獲得焦點後就執行onResume
onCreate:activity第一次運行的時候才調用,而且只調用一次
onRestart:activity不可見後恢復可見時調用
onStart:activity可見的時候調用
onStop:activity不可見的時候調用
onResume:activity獲取焦點時調用
onPause:activitiy失去焦點時調用
onDestroy:activity銷毀時調用
說到啟動模式,它一共有四種,分別是standard、singleTop、singleTask、singleInstance,可以在AndroidManifest.xml文件中通過標簽中的android:launchMode屬性來選擇啟動模式。
standard:
這種模式是標准啟動模式,也是默認的啟動模式,在不進行顯式指定的情況下,所有活動都會自動使用這種模式
singleTop
當啟動模式為singleTop時,在啟動活動的時候如果發現返回棧的站定已經是該活動,那麼就直接使用,不必再創建
singleTask
當啟動模式為singleTask的時候,每次啟動活動都會在返回棧中檢查是否存在該活動,如果存在,並發活動之上的活動統統出棧,否則就創建一個
singleInstance
啟動模式 為singleInstance,這時會單獨創建一個返回棧來管理這個活動,這樣可以達到程序與程序之間共享活動
我們在創建activity的時候必須繼承Android自帶的Activity,在使用時必須要在AndroidManifest.xml文件中注冊,如下:
是通過意圖(Intent)進行通訊,數據傳輸,開啟活動
什麼是意圖呢?
其實它就像我們生活中的快遞員,負責幫我們送東西,Android系統裡的意圖就是上演著這個角色...
它可以與不同程序的活動交流,也可以啟動不在同一個程序中的活動......等等一些,這裡我就不做多介紹了,需要往下了解的可以到網上查下資料
Android布局文件中的layout_weight屬性僅在LinearLayout布局中有效。google推薦:當設置了控件的layout_weight屬性時,該控件相
在之前的一篇博客Android 異步消息處理機制:Looper、Handler、Message中,我們講解了Looper、Handler、Message三者的關系。實際開
前言:最近在開發中發現了一個比較嚴重的問題,當我們將應用按home鍵放入後台運行,一段時間後,當我們再次打開應用的時候,十有八九會出現一個NullPointExcepti
暴露您view中所有影響可見外觀的屬性或者行為。•通過XML添加和設置樣式•通過元素的屬性來控制其外觀和行為,支持和重要事件交流的事件監聽器詳細步