Android之(zhī)路
發表時(shí)間:2020-11-21
發布人(rén):融晨科技
浏覽次數:41
前言
由于(yú)接近放假,公司在(zài)趕項目所以(yǐ)前段LP比較忙,沒什麽時(shí)間總結和(hé / huò)寫博客,隻是(shì)準備睡覺的(de)時(shí)候看看書,每天看的(de)不(bù)算多,大(dà)概10多頁左右吧,不(bù)過每天堅持如此的(de)話那也(yě)是(shì)一個(gè)龐大(dà)的(de)數字。
今天LP的(de)任務完成了(le/liǎo),在(zài)領導還沒分配任務之(zhī)前再發布一篇關于(yú)Activity的(de)博文..........
上(shàng)一篇跟大(dà)家分享了(le/liǎo)Android的(de)發展史、系統框架、還有Android的(de)四大(dà)組件,下面LP就(jiù)爲(wéi / wèi)大(dà)家介紹下四大(dà)組件之(zhī)一的(de)Activity。
知道(dào)了(le/liǎo)Android的(de)曆史之(zhī)後,有沒有讓Android那種打不(bù)死的(de)精神打動了(le/liǎo),如果有的(de)話就(jiù)趕緊動身來(lái)學Android吧..
行了(le/liǎo),廢話不(bù)多說(shuō) Let's go
目錄
- 活動(Activity)
- activity誰來(lái)管?
- 它是(shì)怎麽個(gè)生老病死的(de)?
- 啓動模式
- 如何去使用它?
- 兄弟間該如何進行交互?
Android四大(dà)組件之(zhī)一【Activity】
說(shuō)到(dào)活動相信就(jiù)算沒有android基礎的(de)人(rén)都知道(dào)活動是(shì)個(gè)什麽東西,因爲(wéi / wèi)它會經常出(chū)現在(zài)我們的(de)身邊,但是(shì)說(shuō)到(dào)Activity,那就(jiù)不(bù)一定了(le/liǎo),不(bù)過懂一點英語的(de)人(rén)直接翻譯過來(lái)也(yě)知道(dào)是(shì)活動的(de)意思,其實Android的(de)活動和(hé / huò)現實生活中的(de)活動很相似,也(yě)可以(yǐ)理解爲(wéi / wèi)現實生活中的(de)活動,我們正式開始吧。
說(shuō)到(dào)Android的(de)Activity,它到(dào)底是(shì)個(gè)什麽東西呢? 它就(jiù)是(shì)Android系統中的(de)一個(gè)組件,專門負責與用戶交互的(de),用戶看到(dào)的(de)每一個(gè)界面就(jiù)是(shì)一個(gè)活動。
在(zài)Android中,Activity有基本的(de)四種狀态
1.運行狀态 active/running
處于(yú)屏幕的(de)最前端或者正在(zài)和(hé / huò)用戶交互着,稱爲(wéi / wèi)運行狀态/激活狀态
2.暫停狀态 Paused
當前activity失去焦點,被一個(gè)窗口或者非全屏的(de)東西遮住一點點和(hé / huò)被另一個(gè)透明的(de)activity覆蓋的(de)時(shí)候,稱爲(wéi / wèi)暫停狀态
3.停止狀态 Stoped
當前activity完全看不(bù)到(dào)了(le/liǎo),稱爲(wéi / wèi)停止狀态
4.殺死狀态 Killed
當activity處于(yú)“暫停狀态” Or “停止狀态”,這(zhè)時(shí)候系統就(jiù)可以(yǐ)對當前的(de)activity從内存中删除或者終止它的(de)進程,還有就(jiù)是(shì)當系統内存不(bù)足的(de)時(shí)候也(yě)會執行前者動作。
看電影
如果看完上(shàng)面的(de)還不(bù)能理解,那麽你就(jiù)可以(yǐ)理解爲(wéi / wèi)看電影,那部電影就(jiù)是(shì)當前的(de)activity.
1.電影正在(zài)播放的(de)時(shí)候,稱爲(wéi / wèi)運行狀态
2.當我們點擊暫停按鈕的(de)時(shí)候,屏幕不(bù)是(shì)變暗了(le/liǎo)嗎?或者出(chū)現一個(gè)小廣告,這(zhè)個(gè)就(jiù)可以(yǐ)理解爲(wéi / wèi)被另一個(gè)全屏透明的(de)東西遮住和(hé / huò)非全屏的(de)小廣告,這(zhè)個(gè)就(jiù)是(shì)暫停狀态了(le/liǎo)
3.看港劇看多了(le/liǎo),不(bù)想看了(le/liǎo),就(jiù)換部日本動作片來(lái)看,這(zhè)時(shí)港劇不(bù)是(shì)看不(bù)到(dào)了(le/liǎo)嗎?或者電腦直接黑屏了(le/liǎo),反正看不(bù)到(dào)港劇,也(yě)就(jiù)是(shì)當前的(de)activity。這(zhè)些都可以(yǐ)稱爲(wéi / wèi) 停止狀态
4.就(jiù)是(shì)不(bù)想看電影了(le/liǎo),直接手動把播放器關掉,處于(yú)暫停或者停止狀态,内存不(bù)足的(de)時(shí)候系統會自動關掉播放器
還不(bù)明白話,先不(bù)用鑽牛角尖,先往下看,往後會慢慢的(de)明白的(de).........
Activity該誰來(lái)管?
activity是(shì)由棧來(lái)管理的(de),先進後出(chū),後進先出(chū)。每一個(gè)用戶能看到(dào)的(de)activity都是(shì)處于(yú)棧頂的(de),當内存不(bù)足的(de)時(shí)候,棧裏面最底下的(de)那個(gè)activity就(jiù)會被回收,直接上(shàng)圖最明了(le/liǎo)
[img]http://images.cnitblog.com/blog/549384/201501/061610452652070.png
它又是(shì)怎麽個(gè)生老病死的(de)呢?(生命周期)
這(zhè)個(gè)我就(jiù)不(bù)多說(shuō)了(le/liǎo),直接開始..
官方生命周期圖,LP動了(le/liǎo)點手腳:
[img]http://images.cnitblog.com/blog/549384/201501/061647315313944.png
圖看完了(le/liǎo),緊接着是(shì)代碼:
[img]http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif[img]http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif
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
首次運行的(de)日志如下:
[img]http://images.cnitblog.com/blog/549384/201501/061703147503584.png
按返回鍵退出(chū)的(de)時(shí)候日志如下:
[img]http://images.cnitblog.com/blog/549384/201501/061704408127992.png
按小房子(zǐ)鍵的(de)時(shí)候日志如下:
[img]http://images.cnitblog.com/blog/549384/201501/061708174539972.png
從新返回應用程序的(de)時(shí)候日志如下:
[img]http://images.cnitblog.com/blog/549384/201501/061709321711846.png
還有就(jiù)是(shì)當activity還可見的(de)時(shí)候,也(yě)就(jiù)是(shì)彈出(chū)小窗口,或者透明的(de)activity的(de)時(shí)候,隻會執行 onPause方法,當activity再次獲得焦點後就(jiù)執行onResume
onCreate:activity第一次運行的(de)時(shí)候才調用,而(ér)且隻調用一次
onRestart:activity不(bù)可見後恢複可見時(shí)調用
onStart:activity可見的(de)時(shí)候調用
onStop:activity不(bù)可見的(de)時(shí)候調用
onResume:activity獲取焦點時(shí)調用
onPause:activitiy失去焦點時(shí)調用
onDestroy:activity銷毀時(shí)調用
啓動模式
說(shuō)到(dào)啓動模式,它一共有四種,分别是(shì)standard、singleTop、singleTask、singleInstance,可以(yǐ)在(zài)AndroidManifest.xml文件中通過<activity>标簽中的(de)android:launchMode屬性來(lái)選擇啓動模式。
standard:
這(zhè)種模式是(shì)标準啓動模式,也(yě)是(shì)默認的(de)啓動模式,在(zài)不(bù)進行顯式指定的(de)情況下,所有活動都會自動使用這(zhè)種模式
singleTop
當啓動模式爲(wéi / wèi)singleTop時(shí),在(zài)啓動活動的(de)時(shí)候如果發現返回棧的(de)站定已經是(shì)該活動,那麽就(jiù)直接使用,不(bù)必再創建
singleTask
當啓動模式爲(wéi / wèi)singleTask的(de)時(shí)候,每次啓動活動都會在(zài)返回棧中檢查是(shì)否存在(zài)該活動,如果存在(zài),并發活動之(zhī)上(shàng)的(de)活動統統出(chū)棧,否則就(jiù)創建一個(gè)
singleInstance
啓動模式 爲(wéi / wèi)singleInstance,這(zhè)時(shí)會單獨創建一個(gè)返回棧來(lái)管理這(zhè)個(gè)活動,這(zhè)樣可以(yǐ)達到(dào)程序與程序之(zhī)間共享活動
該如何去使用它?
我們在(zài)創建activity的(de)時(shí)候必須繼承Android自帶的(de)Activity,在(zài)使用時(shí)必須要(yào / yāo)在(zài)AndroidManifest.xml文件中注冊,如下:
[img]http://images.cnitblog.com/blog/549384/201501/061720281255915.png
它們兄弟之(zhī)間是(shì)怎麽交流的(de)呢?
是(shì)通過意圖(Intent)進行通訊,數據傳輸,開啓活動
什麽是(shì)意圖呢?
其實它就(jiù)像我們生活中的(de)快遞員,負責幫我們送東西,Android系統裏的(de)意圖就(jiù)是(shì)上(shàng)演着這(zhè)個(gè)角色...
它可以(yǐ)與不(bù)同程序的(de)活動交流,也(yě)可以(yǐ)啓動不(bù)在(zài)同一個(gè)程序中的(de)活動......等等一些,這(zhè)裏我就(jiù)不(bù)做多介紹了(le/liǎo),需要(yào / yāo)往下了(le/liǎo)解的(de)可以(yǐ)到(dào)網上(shàng)查下資料
其他(tā)精彩文章文章
jQuery教程(10)-DOM樹操作之(zhī)内容setter和(hé / huò)getter方法
android學習筆記(37)使用 DatePickerDialog、TimePickerDialog
android學習筆記(36)使用AlertDialog創建自定義對話框
jQuery教程(1)-操作DOM之(zhī)操作屬性
Spring mvc新手入門(11)-返回json 字符串的(de)其他(tā)方式
更多關于(yú)android開發文章