日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android打印intent flag,Android flag详解

發(fā)布時(shí)間:2023/12/20 Android 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android打印intent flag,Android flag详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Android flag詳解

Android flag詳解

一.Flag標(biāo)志位

在閱讀源碼的時(shí)候經(jīng)常發(fā)現(xiàn)有一些標(biāo)志屬性使用一些位操作來(lái)判斷是否具有該標(biāo)志,增加標(biāo)志或者去除標(biāo)志。

如:

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

Public?Intent?addFlags?(int?flags)

增加額外的標(biāo)志到Intent(或者已經(jīng)存在的flags值)

參數(shù)?flags?需要設(shè)置的新的flags

Returns(返回值)

返回相同Intent對(duì)象,用來(lái)將多個(gè)調(diào)用鏈接成一個(gè)調(diào)用的聲明

public?Intent?setFlags?(int?flags)

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

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

具體內(nèi)容詳情看task和back?stack

參數(shù)?flags?設(shè)置要求的flags

Returns(返回值)

返回相同Intent對(duì)象,用來(lái)將多個(gè)調(diào)用鏈接成一個(gè)調(diào)用的聲明

三.相關(guān)知識(shí)的理解

Task

Task就是一個(gè)任務(wù)棧,里面用來(lái)存放Activity,第一個(gè)進(jìn)去的(Activity)處于棧的最下面,而最后創(chuàng)建的(Activity)則處于棧的最上面。從Task中取出(Activity)是從最頂端取出,也就是說(shuō)先進(jìn)后出,后進(jìn)先出。而Activity在Task中的順序是可以控制的,在Activity跳轉(zhuǎn)時(shí)用到Intent Flag可以設(shè)置新建Activity的創(chuàng)建方式。

Back?Stack

字面意思,是回退棧的意思,它屬于數(shù)據(jù)結(jié)構(gòu)中棧的一種。當(dāng)從一個(gè)Activity?跳到另一個(gè)Activity的時(shí)候,如果不進(jìn)行特殊的處理,就會(huì)有Activity被壓入棧。當(dāng)回退棧為空的時(shí)候,表示當(dāng)前,已經(jīng)到達(dá)了Lancher。因此,我們就可以知道BackStack就是一個(gè)存儲(chǔ)Activity的容器,一般情況下,每需要執(zhí)行一個(gè)Task,都至少有一個(gè)回退棧,這個(gè)容器中也至少有一個(gè)Activity實(shí)例。

LanchMode的作用和使用方法

點(diǎn)擊以下文章:安卓啟動(dòng)Launch mode

例子:

在已經(jīng)啟動(dòng)A,B,C,D四個(gè)Activity的情況下。再啟動(dòng)C的時(shí)候,不希望是ABCDC,而是AB,而且B上的數(shù)據(jù)需要保留

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

it.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//設(shè)置可以關(guān)掉它所跳到的界面之外已經(jīng)開(kāi)啟的activity在這里是把C關(guān)閉

it.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//設(shè)置不要刷新即將跳轉(zhuǎn)的頁(yè)面

D.this.startActivity(it);

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

FLAG_GRANT_READ_URI_PERMISSION

如果設(shè)置了,Intent的接受者將被準(zhǔn)許執(zhí)行read操作(Intent?攜帶的URI數(shù)據(jù)和任何Clipdata中特定的URIs數(shù)據(jù))的權(quán)限。

FLAG_GRANT_WRITE_URI_PERMISSION

如果設(shè)置了,Intent的接受者將被準(zhǔn)許執(zhí)行write操作(Intent?攜帶的URI數(shù)據(jù)和任何Clipdata中特定的URIs數(shù)據(jù))的權(quán)限。

FLAG_GRANT_PERSISTABLE_URI_PERMISSION

當(dāng)結(jié)合使用?flag_grant_read_uri_permission?和/或?flag_grant_write_uri_permission,URI權(quán)限授予可以堅(jiān)持在設(shè)備重新啟動(dòng)直到明確撤銷?用revokeuripermission(URI,int)。

FLAG_GRANT_PREFIX_URI_PERMISSION

當(dāng)結(jié)合使用?flag_grant_read_uri_permission?和/或?flag_grant_write_uri_permission,URI權(quán)限授予適用于任何前綴匹配不同于原始的授予的URI。

FLAG_DEBUG_LOG_RESOLUTION

使能夠使用調(diào)試功能的flag。設(shè)置之后,日志信息將在intent處理過(guò)程被輸出,為了告訴你最后的解決列表被發(fā)現(xiàn)已創(chuàng)建。

FLAG_FROM_BACKGROUND

可以由調(diào)用者設(shè)置,以指示此意圖來(lái)自后臺(tái)操作,而不是來(lái)自直接用戶交互.。

FLAG_ACTIVITY_BROUGHT_TO_FRONT

這個(gè)flag不能正常地被應(yīng)用程序代碼設(shè)置,而是系統(tǒng)為你設(shè)置由于在?launchMode?設(shè)置為singleTask模式

FLAG_ACTIVITY_CLEAR_TOP

如果已設(shè)置,并且正在啟動(dòng)的活動(dòng)已經(jīng)在當(dāng)前任務(wù)(backstack)中運(yùn)行,那么,而不是啟動(dòng)該活動(dòng)的新實(shí)例,而且它上面的所有其他活動(dòng)都將被關(guān)閉,而這個(gè)意圖將作為一個(gè)新的意圖傳遞到(現(xiàn)在的頂部)舊活動(dòng)中.。

FLAG_ACTIVITY_NEW_TASK

設(shè)置此標(biāo)志使activity將成為此歷史堆棧上新任務(wù)的開(kāi)始

1.如果D這個(gè)Activity在Manifest.xml中的聲明中添加了Task Affinity,系統(tǒng)首先會(huì)查找有沒(méi)有和D的Task Affinity相同的Task棧存在,如果有存在,將D壓入那個(gè)棧

2.如果D這個(gè)Activity在Manifest.xml中的Task Affinity默認(rèn)沒(méi)有設(shè)置,則會(huì)把其壓入棧1,變成:A B C D,這樣就和標(biāo)準(zhǔn)模式效果是一樣的了。

禁用掉系統(tǒng)默認(rèn)的Activity切換動(dòng)畫。

FLAG_ACTIVITY_NO_HISTORY

設(shè)置此標(biāo)志activity將不添加到回退棧(backStack)

FLAG_ACTIVITY_NO_USER_ACTION

設(shè)置此標(biāo)志,將阻止onuserleavehint()正常回調(diào)發(fā)生在當(dāng)前最前的活動(dòng),在它被停下來(lái)作為新啟動(dòng)活動(dòng)被帶到前面。

FLAG_ACTIVITY_PREVIOUS_IS_TOP

如果設(shè)置并使用此意圖從現(xiàn)有的一個(gè)activity?a啟動(dòng)到新activity?b,新avitivity?b將不會(huì)被視為棧頂而是activity?a,而是決定是否新意圖傳遞到頂部而不是啟動(dòng)新的活動(dòng)。

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

設(shè)置此標(biāo)志使這個(gè)活動(dòng)要么開(kāi)始在一個(gè)新的任務(wù)或帶到現(xiàn)有的任務(wù)的頂部,那么它將被啟動(dòng)作為任務(wù)的前門。

FLAG_ACTIVITY_REORDER_TO_FRONT

如果在通過(guò)?Context.startactivity()去設(shè)置/啟動(dòng)一個(gè)Intent,如果需要啟動(dòng)的activity已經(jīng)運(yùn)行,此標(biāo)志使被啟動(dòng)的活動(dòng)被帶到任務(wù)的歷史堆棧的前面.。

FLAG_ACTIVITY_SINGLE_TOP

如果設(shè)置,activity將不會(huì)被啟動(dòng)如果其正在backstack的棧頂

FLAG_ACTIVITY_TASK_ON_HOME

如果在通過(guò)?Context.startactivity()去設(shè)置/啟動(dòng)一個(gè)Intent,此flag將使新啟動(dòng)任務(wù)置于當(dāng)前活動(dòng)任務(wù)的頂部(如果只有一個(gè)task時(shí))。

FLAG_RECEIVER_REGISTERED_ONLY

如果設(shè)置,當(dāng)發(fā)送一個(gè)廣播只有注冊(cè)接收器將被調(diào)用,沒(méi)有BroadcastReceiver組件將被啟動(dòng)。

FLAG_RECEIVER_FOREGROUND

當(dāng)發(fā)送廣播的時(shí)候設(shè)置了這個(gè)標(biāo)志,會(huì)允許接收者以前臺(tái)的優(yōu)先級(jí)運(yùn)行,有更短的時(shí)間間隔。正常廣播的接受者是后臺(tái)優(yōu)先級(jí),不會(huì)被自動(dòng)提升。

FLAG_RECEIVER_REPLACE_PENDING

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

Android flag詳解相關(guān)教程

總結(jié)

以上是生活随笔為你收集整理的android打印intent flag,Android flag详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。