android打印intent flag,Android flag詳解

Android flag詳解

Android flag詳解

一.Flag標志位

在閱讀源碼的時候經常發現有一些標志屬性使用一些位操作來判斷是否具有該標志,增加標志或者去除標志。

如:

二.addFlags?(int?flags)和setFlags?(int?flags)區別

Public?Intent?addFlags?(int?flags)

增加額外的標志到Intent(或者已經存在的flags值)

參數?flags?需要設置的新的flags

Returns(返回值)

返回相同Intent對象,用來將多個調用鏈接成一個調用的聲明

public?Intent?setFlags?(int?flags)

設置特定的flags去控制Intent如何執行。大部分的values?依賴于正在被執行的Intent組件的類型,特別是FLAG_ACTIVITY_*?這些flags全部用在Context.startActivity()?和

FLAG_RECEIVER_*?這些flags全部用在?Context.sendBroadcast().

具體內容詳情看task和back?stack

參數?flags?設置要求的flags

Returns(返回值)

返回相同Intent對象,用來將多個調用鏈接成一個調用的聲明

三.相關知識的理解

Task

Task就是一個任務棧,里面用來存放Activity,第一個進去的(Activity)處于棧的最下面,而最后創建的(Activity)則處于棧的最上面。從Task中取出(Activity)是從最頂端取出,也就是說先進后出,后進先出。而Activity在Task中的順序是可以控制的,在Activity跳轉時用到Intent Flag可以設置新建Activity的創建方式。

Back?Stack

字面意思,是回退棧的意思,它屬于數據結構中棧的一種。當從一個Activity?跳到另一個Activity的時候,如果不進行特殊的處理,就會有Activity被壓入棧。當回退棧為空的時候,表示當前,已經到達了Lancher。因此,我們就可以知道BackStack就是一個存儲Activity的容器,一般情況下,每需要執行一個Task,都至少有一個回退棧,這個容器中也至少有一個Activity實例。

LanchMode的作用和使用方法

點擊以下文章:安卓啟動Launch mode

例子:

在已經啟動A,B,C,D四個Activity的情況下。再啟動C的時候,不希望是ABCDC,而是AB,而且B上的數據需要保留

Intent it = new Intent(D.this,B.class);

it.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//設置可以關掉它所跳到的界面之外已經開啟的activity在這里是把C關閉

it.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//設置不要刷新即將跳轉的頁面

D.this.startActivity(it);

四.各Flag(標志)屬性?詳解

FLAG_GRANT_READ_URI_PERMISSION

如果設置了,Intent的接受者將被準許執行read操作(Intent?攜帶的URI數據和任何Clipdata中特定的URIs數據)的權限。

FLAG_GRANT_WRITE_URI_PERMISSION

如果設置了,Intent的接受者將被準許執行write操作(Intent?攜帶的URI數據和任何Clipdata中特定的URIs數據)的權限。

FLAG_GRANT_PERSISTABLE_URI_PERMISSION

當結合使用?flag_grant_read_uri_permission?和/或?flag_grant_write_uri_permission,URI權限授予可以堅持在設備重新啟動直到明確撤銷?用revokeuripermission(URI,int)。

FLAG_GRANT_PREFIX_URI_PERMISSION

當結合使用?flag_grant_read_uri_permission?和/或?flag_grant_write_uri_permission,URI權限授予適用于任何前綴匹配不同于原始的授予的URI。

FLAG_DEBUG_LOG_RESOLUTION

使能夠使用調試功能的flag。設置之后,日志信息將在intent處理過程被輸出,為了告訴你最后的解決列表被發現已創建。

FLAG_FROM_BACKGROUND

可以由調用者設置,以指示此意圖來自后臺操作,而不是來自直接用戶交互.。

FLAG_ACTIVITY_BROUGHT_TO_FRONT

這個flag不能正常地被應用程序代碼設置,而是系統為你設置由于在?launchMode?設置為singleTask模式

FLAG_ACTIVITY_CLEAR_TOP

如果已設置,并且正在啟動的活動已經在當前任務(backstack)中運行,那么,而不是啟動該活動的新實例,而且它上面的所有其他活動都將被關閉,而這個意圖將作為一個新的意圖傳遞到(現在的頂部)舊活動中.。

FLAG_ACTIVITY_NEW_TASK

設置此標志使activity將成為此歷史堆棧上新任務的開始

1.如果D這個Activity在Manifest.xml中的聲明中添加了Task Affinity,系統首先會查找有沒有和D的Task Affinity相同的Task棧存在,如果有存在,將D壓入那個棧

2.如果D這個Activity在Manifest.xml中的Task Affinity默認沒有設置,則會把其壓入棧1,變成:A B C D,這樣就和標準模式效果是一樣的了。

禁用掉系統默認的Activity切換動畫。

FLAG_ACTIVITY_NO_HISTORY

設置此標志activity將不添加到回退棧(backStack)

3b81245421336fccd3cce7accd15eec2.png

FLAG_ACTIVITY_NO_USER_ACTION

設置此標志,將阻止onuserleavehint()正常回調發生在當前最前的活動,在它被停下來作為新啟動活動被帶到前面。

30ebcc27f803728945ca9bd7156284c7.png

FLAG_ACTIVITY_PREVIOUS_IS_TOP

如果設置并使用此意圖從現有的一個activity?a啟動到新activity?b,新avitivity?b將不會被視為棧頂而是activity?a,而是決定是否新意圖傳遞到頂部而不是啟動新的活動。

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

設置此標志使這個活動要么開始在一個新的任務或帶到現有的任務的頂部,那么它將被啟動作為任務的前門。

FLAG_ACTIVITY_REORDER_TO_FRONT

如果在通過?Context.startactivity()去設置/啟動一個Intent,如果需要啟動的activity已經運行,此標志使被啟動的活動被帶到任務的歷史堆棧的前面.。

bc4e7fde27823b46df24eb0f5ce9beff.png

FLAG_ACTIVITY_SINGLE_TOP

如果設置,activity將不會被啟動如果其正在backstack的棧頂

c7105500fbd89999a4b2af8277ba2f00.png

FLAG_ACTIVITY_TASK_ON_HOME

如果在通過?Context.startactivity()去設置/啟動一個Intent,此flag將使新啟動任務置于當前活動任務的頂部(如果只有一個task時)。

3f2f66ddcb43b492babca171ebfd8d11.png

FLAG_RECEIVER_REGISTERED_ONLY

如果設置,當發送一個廣播只有注冊接收器將被調用,沒有BroadcastReceiver組件將被啟動。

FLAG_RECEIVER_FOREGROUND

當發送廣播的時候設置了這個標志,會允許接收者以前臺的優先級運行,有更短的時間間隔。正常廣播的接受者是后臺優先級,不會被自動提升。

FLAG_RECEIVER_REPLACE_PENDING

如果在發送廣播時設置了這個標志,那新的廣播會替換掉那些已存在的相同廣播。相同的定義是通過Intent.filterEquals方法對兩個廣播的Intent處理返回true。 當匹配到相同的,新的廣播和對應的接收器會將待發送的廣播列表中已存在的替換掉,在列表中保留同樣的位置。這個標志通常被粘性廣播(Sticky Broadcast)使用,只保證將最新的廣播的值傳遞給接收器。

Android flag詳解相關教程

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452476.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452476.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452476.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人機界面設計

1.系統響應時間 系統響應時間指從用戶完成某個控制動作(例如,按回車鍵或單擊鼠標),到軟件給出預期的響應(輸出信息或做動作)之間的這段時間。 系統響應時間有兩個重要屬性,分別是長度和易變性。 1)長度:時間過長&#…

GeoHash資料

geohash基本原理 轉載于:https://www.cnblogs.com/hyl8218/p/9111410.html

開啟市場新格局 且看新華三計算與存儲新品發布會

全球領先的新IT解決方案領導者新華三將于8月31日在北京釣魚臺國賓館舉辦“新IT 新動能 新格局 新華三下一代計算與存儲發布會”,重磅發布服務器和存儲的全線新品。 2017年初,新華三集團正式推出了“應用驅動 云領未來”的新IT戰略。在這一戰略指引下&…

Centos7更新 SQLite3至版本3.29.0

文章目錄1.創建 src 目錄并進到這個目錄2.下載 sqlite3 源碼并解壓安裝3.替換系統低版本 sqlite31.創建 src 目錄并進到這個目錄 fxd用戶下: mkdir -p ~/src cd ~/src 2.下載 sqlite3 源碼并解壓安裝 fxd用戶下: wget https://sqlite.org/2019/sqlite…

開發人員必學的5門課程

越來越多的Web開發人員通常都會問一些同樣的問題。比如:哪一種開發語言最重要?初級開發人員的薪金會是多少?公司提供的免費培訓有用嗎?如何評估一個新的項目?盡管這些問題都很重要,但是開發人員往往對其他人…

android 響應類型,android – Retrofit 2 RxJava – Gson – “全局”反序列化,更改響應類型...

正如Than所說,使用攔截器的解決方案并不是那么好.我已經設法用一個Rx變壓器來解決這個問題.我還添加了自定義api異常,當出現問題時我可以拋出它并在onError中輕松處理它.我認為它更強大.響應包裝器:public class ApiResponse {private boolean success;private T da…

龜兔賽跑問題

題目 烏龜與兔子進行賽跑,跑場是一個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3米,兔子每分鐘前進9米;兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,于是,每跑10分鐘回頭看一下烏龜&#x…

過程設計的工具

描述程序處理過程的工具稱為過程設計工具,它可以分為圖形、表格和語言3類。不論是那類工具,對他們的基本要求都是提供對設計 無歧義的描述,也就是應該能夠指明控制流程、處理功能、數據組織以及其他方面的實現細節。從而在編碼階段能夠把對應…

Centos7中安裝python3.7、pip3以及pipenv(親測有效)

文章目錄1.安裝python3.7以及pip32.使用pip3安裝pipenv時pip報錯3.使用pip3安裝pipenv時出現ReadTimeoutError4.查看pipenv版本報錯1.安裝python3.7以及pip3 1)首先來安裝依賴 yum -y install gcc gcc-c yum -y groupinstall “Development tools” yum install openssl-deve…

成功人士都是這樣逼出來的

研究過很多很多成功人士的成才之路,發現這些人和我們普通人其實沒有什么區別,不過,這些人用老祖宗的話說是“天將降大任于斯人也,必將苦其心志,勞其筋骨,餓其體膚,空乏其身,所以動心…

Linux下網卡綁定模式

Linux bonding驅動一共提供了7種模式,它們分別是:balance-rr 、active-backup、balance-xor、broadcast、802.3ad、balance-tlb、balance-alb。 balance-rr or 0:輪詢模式,提供負載平衡和容錯。該模式下兩個網口都工作 active-…

Unity4.6證書激活問題

第一次運行的激活問題安裝好Unity4.6之后首次啟動會自動連網,但是會出現error loading page錯誤,SSL peer certificate or SSH remote key was not OK。如下圖所示: 點OK就退出了。再啟動一遍也是一樣的。 這時可以先暫時斷一下網&#xff0c…

Readhat中掛載yum源

文章目錄1.鏈接物理鏡像2.查看原始掛載目錄3.掛載4.新建iso.repo5.查看掛載目錄1.鏈接物理鏡像 vmware控制臺中,勾選設備狀態成“已連接”,會在桌面生成鏡像圖標。 2.查看原始掛載目錄 輸入以下指令: [rootlocalhost ~]# df -h Filesystem…

面向數據結構設計的基本思想

Jackson 方法的軟件設計過程是從數據結構入手,由數據結構之間的關系導出程序結構,這使軟件系統的開發“有章可循”。尤其這一方法特別適合于以數據為主,“計算”較簡單的數據處理系統。因此可稱其為“面向數據的方法”。由于這一技術未提供對…

html圖片分四面切割播,CSS3切割輪播圖

* {margin:0;padding:0;}.view {width:560px;height:300px;margin:200px auto;position:relative;}.box {width:100%;height:100%;list-style:none;background-color:black;position:absolute;/* 開啟3d效果 */transform-style:preserve-3d;}.box li {width:25%;height:100%;po…

知其所以然地學習(以算法學習為例)

其實下文的絕大部分內容對所有學習都是同理的。只不過最近在正兒巴經地學算法,而后者又不是好啃的骨頭,所以平時思考總結得就自然要比學其它東西要多一些。 問題:目前幾乎所有的算法書的講解方式都是歐幾里德式的、瀑布式的、自上而下的、每…

Win10安全特性之執行流保護

騰訊電腦管家 2015/02/04 15:070x00 背景微軟在2015年1月22日公布了windows10技術預覽版,Build號:9926。電腦管家反病毒實驗室第一時間對其引入的新安全特性進行了深入分析。眾所周知,漏洞利用過程中攻擊者若要執行惡意代碼,需要…

【Java】 大話數據結構(1) 線性表之順序存儲結構

本文根據《大話數據結構》一書,實現了Java版的順序存儲結構。 順序存儲結構指的是用一段地址連續的存儲單元一次存儲線性表的數據元素,一般用一維數組來實現。 書中的線性表抽象數據類型定義如下(第45頁): 實現程序&am…

程序復雜程度的定量度量

對程序復雜程度進行度量的目的 1.把程序的復雜程度乘以適當常數即可估算出軟件中錯誤的數量以及軟件開發需要用的工作量, 2.定量度量的結果可以用來比較兩個不同的設計或兩個不同算法的優劣; 3.程序的定量的復雜程度可以作為模塊規模的精確限度。 …

Readhat中升級openssh

1.掛載yum源(鏡像) 如何掛載yum源(鏡像),在本人的另外一篇博客中,請戳這里 2.安裝升級所需依賴 由于升級ssh需要安裝依賴,這里提前將所需依賴安裝 指令: yum install -y zlib-dev…