編輯:關於android開發
好久沒寫博客了,腦子都秀逗了,最近比較忙,整天睡不醒,還有私信我繼續更新即時通訊的同伴們,近期可能沒戲,但是我承諾的一定完成!
任務棧,從它的名字我們就知道它有棧的特點『先進後出』,默認情況下activity的任務棧的名字就是你app的包名,當然,你也可以單獨的為你的activity指定任務棧,通過修改TaskAffinity屬性,當然不要指定成包名啦,否則跟沒指定一樣。任務棧分為前台任務棧和後台任務棧,後台任務棧中的存放的是暫停狀態下的activity,前台任務棧就是當下正在操作的任務棧啦!
下面開始啟動模式:
啟動activity可以有兩種形式,一種是設置launchMode屬性,另一種通過設置intent的flag啟動activity
系統默認的啟動模式,啟動一個activity時,不管這個棧中存不在這個activity,系統都會為它新建一個activity實例,壓入棧裡
啟動一個activity時,如果當前的activity在棧頂,那麼系統就不會再去創建一個該Activity的實例,而是調用棧頂Activity的onNewIntent()方法
這個啟動模式是專門針對於啟動其他應用的activity,只有啟動其他activity的時候才會新建一個新的任務棧。系統會創建一個新的任務,並將啟動的Activity放入這個新任務的棧底位置。但是,如果現有任務當中已經存在一個該Activity的實例了,那麼系統就不會再創建一次它的實例,而是會直接調用它的onNewIntent()方法
這種啟動模式和singleTask有點相似,只不過系統不會向聲明成singleInstance的Activity所在的任務當中再添加其它Activity。也就是說,這種Activity所在的任務中始終只會有一個Activity,通過這個Activity再打開的其它Activity也會被放入到別的任務當中
當把Activity的allowTaskReparenting屬性設置成true時,Activity就擁有了一個轉移所在任務的能力,當然想具有這種神器能力的前提是taskAffinity相同,感覺跟你說完這句話突然把你推到坑裡了,下面給出一個實例:app A啟動app B的activity C,按home鍵回到桌面,當你啟動app B的時候,顯示的是activity C,A啟動了C,C在A的任務棧中,但是C屬於app B並且C的taskAffinity跟B相同,所以app B啟動的時候任務棧的棧頂有個C,所以顯示的就是C了
在Intent當中,有以下幾個flag是比較常用的:
FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_SINGLE_TOP FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS與singleTask類似,但又不完全相同,被啟動的activity運行在獨立的任務棧中
這個標記位和singleTop的啟動模式相同
具有此標志位的activity,當它啟動時,在同一個任務棧中所有位於它上面的activity都要出棧,這個模式一般需要和FLAG_ACTIVITY_NEW_TASK配合使用,在這種情況下被啟動的activity如果已經存在,系統就會調用onNewIntent。如果被啟動的activity采用的是標准模式,它和它之前的activity都要出棧
具有此標志位的activity不會出現在歷史activity的列表中,它等同於
android:excludeFromRecents=”true”
如何用戶將任務切換到後台之後過了很長一段時間,系統會將這個任務中除了最底層的那個Activity之外的其它所有Activity全部清除掉。當用戶重新回到這個任務的時候,最底層的那個Activity將得到恢復。這個是系統默認的行為,因為既然過了這麼長的一段時間,用戶很有可能早就忘記了當時正在做什麼,那麼重新回到這個任務的時候,基本上應該是要去做點新的事情了。
alwaysRetainTaskState clearTaskOnLaunch finishOnTaskLaunch如果將首頁Activity的這個屬性設置為true,任務棧所有的Activity會被繼續保留
如果將首頁Activity的這個屬性設置為true,那麼只要用戶離開了當前任務,再次返回的時候就會將最底層Activity之上的所有其它Activity全部清除掉。也就是沒次返回任務棧時都是從首頁開始
這個屬性和clearTaskOnLaunch是比較類似的,不過它不是作用於整個任務上的,而是作用於單個Activity上。如果某個Activity將這個屬性設置成true,那麼用戶一旦離開了當前任務,再次返回時這個Activity就會被清除掉
算法—比較兩種排序算法:選擇排序和插入排序,排序算法現在我們已經實現了兩種排序算法,我們很自然地想知道選擇排序和插入排序哪種更快。這裡我們第一次用實踐說明我們解決這個問題
BLE-NRF51822教程8-動態廣播本講接收如何實現動態廣播。 教程基於 9.0 sdk中的 Uart例子。 重啟廣播 所以我們通過一個定時器來周期性的 關閉廣播然後
android TextView實現跑馬燈效果 最近忙著項目,很久沒有總結提交博客和提交github了。接下來我打算整理下項目中用到的比較有用的發表到博客上。也打算總
android通訊錄導航欄源碼(一),android導航欄 通訊錄導航欄源碼: 1.activity 1 package com.anna.contac