成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

V4 包中,雞肋的 AppLaunchChecker

開發 開發工具
Android Support v4 一直作為一個向下兼容的庫而存在,而從 23.3.0 開始,增加了一個 AppLaunchChecker 的類,用于判定當前的 App 是否被用戶從桌面啟動過。

一、前言

Android Support v4 一直作為一個向下兼容的庫而存在,而從 23.3.0 開始,增加了一個 AppLaunchChecker 的類,用于判定當前的 App 是否被用戶從桌面啟動過。

這樣一個功能,有點略顯雞肋,不過不影響我們去了解它。

[[198025]]

二、AppLaunchChecker

1.1 存在的意義

看 Api Doc ,AppLaunchChecker 就是為了檢查當前 App 是否被用戶啟動過,是一個用戶行為。

***次看到這樣的解釋,可能會有歧義,如果 App 能做這樣的檢測,就說明當前處于運行階段,所以很難想像這樣的一個判斷的意義在哪里。

而實際上,有一些 App ,是會提供一些其他服務給別的 App 使用的,例如最常見的系統相冊的 App ,其他 App 是可以調用它來選擇圖片的,而無需從桌面去啟動它,但是它的代碼卻被運行過。

AppLaunchChecker 就是為了做這種區分,標記是否有一個以用戶行為為出發點,啟動了你的 App。

1.2 它的 Api

AppLaunchChecker 的功能非常的簡單,所以它的 Api 也相對簡單。

它提供了一個 onActivityCreate() 的方法,供啟動的 Activity 在 onCreate() 的時候調用,主要用于檢測是否由用戶從 Launcher App 中啟動,又提供了一個 hasStartedFromLauncher() 方法來獲取檢測的結果。

這實際上也沒什么好說的,既然這么簡單,那我們進去看看它的實現原理。

先來看看 onActivityCreate() 的實現。

可以看到,它的原理就是通過啟動 Activity 的 Intent 中的 Action 和 Category 來區分,這個看看代碼就能知道,沒什么好說的。

它會把判斷的結果,存入 SharedPreferences 中,name 和 key 都在 AppLauncherChecker 中定義好了。

最終,需要在我們需要判斷的時候,調用 hasStartedFromLauncher() 方法即可。

2.3 需要注意什么?

既然知道 AppLaunchChecker 的判斷原理,那么它使用的時候還是有一些需要注意的。

1、需要在 App 的入口 Activity 中,調用 onActivityCreate()

因為現在大部分 App 的結果是有一個 SplashActivity 來放一個啟動圖,然后再去跳轉到 MainActivity 。所以這樣的情況下,就需要在 SplashActivity 的 onCreate() 中,調用 AppLaunchChecker.onActivityCreate() ,之后就可以在需要的地方去獲取結果了。而在 MainActivity 中去檢測的話,它的 Action 和 Category 都將是不正確的。

2、它只能判斷是否曾經啟動過

AppLaunchChecker.onActivityCreate() 方法,只有存儲狀態的,一旦存儲將不會去修改它,所以只要有一次是用戶啟動的,通過 hasStartedFromLauncher() 方法獲取到的值將永遠是 true 。

3、它真的不準

既然它是通過 Action 和 Category 去做的判斷,實際上這是不嚴謹的。只要是個 App ,通過 PackageManager 去啟動你的 App ,它的 Action 和 Category 其實都是符合這里的判斷條件的。

只要有 App 通過這樣的方式啟動,AppLaunchChecker 就會人為是用戶行為。

看看 ApplicationPackageManager 中的實現,確實也是這樣的。

三、結語

到這里就基本上明白了 AppLaunchChecker 的原理了,有一些人覺得它的值沒有修改的時機,然后對 AppLaunchChecker 進行修改的邏輯,想在判斷的地方加個 else ,修改它為 false。

現在看來,實際上這樣的修改完全沒有意義,通過正常走 PackageManager.getLaunchIntentForPackage() 去調起,必然會判斷是用戶啟動的,否者也啟動不起來。

AppLaunchChecker 現在看來確實挺雞肋的,它有什么使用場景,就只能發揮想象力了。

【本文為51CTO專欄作者“張旸”的原創稿件,轉載請通過微信公眾號聯系作者獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2010-08-05 16:00:14

NFS v4

2010-07-28 15:17:07

2011-12-03 19:13:18

Android

2014-04-28 15:58:46

PrintUsage 打印

2016-09-02 14:53:11

戴爾

2016-04-17 21:29:55

戴爾

2010-03-06 22:27:49

OpenScape語音統一通信西門子

2020-04-15 09:19:14

Veeam

2009-11-30 16:47:01

阿爾法路由器v4

2018-04-18 09:39:07

深度學習

2020-10-23 14:18:00

智慧社區互聯網科技

2016-04-06 11:52:25

浪潮

2016-04-11 10:19:00

戴爾

2009-04-24 14:36:50

開源微軟Windows

2022-05-16 09:00:00

機器學習模型算力

2016-04-05 09:16:43

Intel

2017-09-13 16:46:38

敏捷站會團隊

2016-06-07 17:44:23

華為

2025-05-13 07:00:00

惡意軟件終端安全網絡安全

2016-06-17 16:18:49

超云E7
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久久久久久久九 | 欧美日韩国产在线 | 欧美日高清 | 国产黄色在线 | 亚洲国产精品一区 | 欧美成人精品一区二区男人看 | 欧美日韩国产一区二区三区 | 日本高清不卡视频 | 日本一区视频在线观看 | 久久精品一二三影院 | 亚洲视频在线观看免费 | 国产精品自拍啪啪 | 91九色porny首页最多播放 | 最新毛片网站 | 久久男人 | 欧美日韩久久久久 | 中文字幕一区二区三区乱码在线 | 久久国产精品久久久久久 | 欧美成人精品 | 中文字幕伊人 | 九九亚洲 | 日韩毛片网 | 欧美午夜视频 | 成人黄色在线 | 日韩成年人视频在线 | 欧美美女爱爱视频 | 久久久精品一区二区 | 日本特黄a级高清免费大片 国产精品久久性 | 欧美一区二区视频 | 精品国产乱码久久久久久牛牛 | 国产伦一区二区三区久久 | 日韩高清一区 | 国产视频第一页 | 日韩中文字幕在线播放 | 91在线成人| 嫩草视频免费 | 欧美一级全黄 | 91视频久久 | 国产精品一区二 | 色在线看| 91视视频在线观看入口直接观看 |