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

Activity 生命周期,如何一手掌控

開發(fā) 開發(fā)工具
對(duì)于一個(gè) Activity 而言,它是有固定的生命周期的,但是它只是對(duì)于 Activity 自身的一種管理。如果有需求需要對(duì) App 內(nèi),所有 Activity 的生命周期進(jìn)行管理的話,就需要另行處理了。

 

一、前言

對(duì)于一個(gè) Activity 而言,它是有固定的生命周期的,但是它只是對(duì)于 Activity 自身的一種管理。如果有需求需要對(duì) App 內(nèi),所有 Activity 的生命周期進(jìn)行管理的話,就需要另行處理了。

這個(gè)時(shí)候,就可以用到 Android level 14 (Android 4.0) 新添加的 API ,AndroidLifecycleCallbacks 就可以對(duì)當(dāng)前進(jìn)程內(nèi)所有的 Activity 進(jìn)行統(tǒng)一的管理了。

二、什么是AndroidLifecycleCallback

AndroidLifecycleCallback 是 Android 4.0 新添加的API ,它是一個(gè) Application 內(nèi)的公有接口。而使用它,也需要配合 Application 對(duì)象進(jìn)行使用。

既然 AndroidLifecycleCallbacks 是全局的管理 Activity 的生命周期,它自然需要對(duì)應(yīng)出 Activity 的所有生命周期的方法。

可以看到,這里的 AndroidLifecycleCallback 是一個(gè)接口,我們需要實(shí)現(xiàn)它。并通過 registerActivityLifecycleCallbacks() 方法,將其注冊(cè)到當(dāng)前的 Application 對(duì)象上,在無需使用的時(shí)候,還需要調(diào)用 unregisterActivityLifecycleCallbacks() 進(jìn)行解注。

從注冊(cè)和解注的方法實(shí)現(xiàn)中就可以看出來,它實(shí)際上就是通過一個(gè) ArrayList 的數(shù)組,mActivityLifecycleCallbacks 進(jìn)行維護(hù)的,也就是說,我們可以在 Application 對(duì)象上添加多個(gè) Callbacks 監(jiān)聽。

而具體是何時(shí)使用它的,就是完全依賴于 Application 的一些方法了,就以 Activity.onCreate() 的監(jiān)聽為例子。

這里就是將 Callbacks 拿出來,循環(huán)調(diào)用對(duì)應(yīng)的方法即可。

三、適用場(chǎng)景比如何使用更重要

其實(shí) AndroidLifecycleCallback 的 API 非常的簡(jiǎn)單,使用起來也并不復(fù)雜,所以說,在什么場(chǎng)景下使用它,比如何使用它更重要。

常見的一些使用場(chǎng)景:

1、為頁面添加統(tǒng)計(jì)

如果需要為每個(gè)頁面,添加頁面的PV、UV等統(tǒng)計(jì)的話,除了在每個(gè) Activity 的對(duì)應(yīng)聲明周期方法內(nèi),添加統(tǒng)計(jì)之外,就可以用到 AndroidLifecycleCallbacks 進(jìn)行統(tǒng)一添加,便于管理。

2、一鍵退出所有頁面

既然可以對(duì)所有的 Activity 進(jìn)行管理,當(dāng)然可以做到一鍵退出所有 Activity 的功能。

3、判斷當(dāng)前App是否在前臺(tái)

對(duì)于退出到后臺(tái)的 App ,一定有一個(gè) Activity 走到了 onPause() 而幾乎同時(shí)沒有另外一個(gè) Activity 走到了 onResume()。最簡(jiǎn)單的一個(gè)實(shí)現(xiàn)方式,就是在 onActivityPaused() 的時(shí)候,使用 Handler 做一個(gè)延遲判斷,如果馬上就有另外一個(gè) Activity 走到了 onActivityResume() 的時(shí)候,就將延遲消息 remove 掉,否者認(rèn)為是退出到后臺(tái)了。

四、LifecycleCallback 有什么缺陷

其實(shí) ActivityLifecycleCallbacks 整體來說,還是很方便實(shí)用的。但是它也有一些缺陷的地方,例如有 Api 限制、無法監(jiān)聽到 Fragment 的生命周期等。

這里簡(jiǎn)單提一下對(duì)于這些問題的一個(gè)簡(jiǎn)單的解決方案,例子就不擺出來了。

既然需要兼容 Android 4.0 以下的設(shè)備,而這又僅僅是用于監(jiān)聽 Activity 的聲明周期,實(shí)際上我們是可以用一個(gè) Activity 的父類,讓所有項(xiàng)目?jī)?nèi)的 Activity 都繼承于它,這樣的話,在這個(gè)父類中對(duì)應(yīng)的聲明周期方法內(nèi),去分發(fā)對(duì)應(yīng)的監(jiān)聽回調(diào)即可。而 Fragment 生命周期的監(jiān)聽,思路也是如此的。

這一切如果實(shí)現(xiàn)起來覺得有點(diǎn)繁瑣,可以參見一個(gè)開源項(xiàng)目:

https://github.com/soarcn/AndroidLifecyle

實(shí)際上它的思路和上面提到的思路是一樣的,只是封裝的更方便使用了,有需要的可以閱讀一下源碼就清楚了。

五、小結(jié)

能監(jiān)聽所有 Activity 的狀態(tài),是一件非常有意義的事情,它能實(shí)現(xiàn)哪些功能,就需要根據(jù)實(shí)際的需求和發(fā)揮我們的想象力了。

【本文為51CTO專欄作者“張旸”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過微信公眾號(hào)聯(lián)系作者獲取授權(quán)】

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

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2015-05-18 15:37:28

2013-04-17 10:30:07

GlassGoogle

2012-05-21 15:34:48

H3C無線路由

2011-06-16 09:31:21

ActivityAndroid

2010-01-26 13:20:02

Android Act

2013-12-26 15:26:48

Android SDKActivity生命周期

2021-08-24 07:53:28

AndroidActivity生命周期

2015-07-08 16:28:23

weak生命周期

2022-04-19 07:20:24

軟件開發(fā)安全生命周期SSDLC應(yīng)用安全

2019-10-24 15:23:04

SQL優(yōu)化數(shù)據(jù)庫

2010-07-14 10:48:37

Perl線程

2009-06-11 11:28:35

JSF生命周期

2009-08-12 18:39:01

軟件開發(fā)的生命周期

2012-06-20 10:29:16

敏捷開發(fā)

2009-06-24 10:47:55

JSF生命周期

2013-08-19 17:03:00

.Net生命周期對(duì)象

2021-07-19 05:52:29

網(wǎng)絡(luò)生命周期網(wǎng)絡(luò)框架

2023-08-24 21:49:54

人工智能高端算法工程師

2012-11-22 16:38:08

掌上齊魯

2023-12-28 09:59:37

Spring容器XML
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 91九色麻豆 | 国产精品久久久久一区二区 | 丁香婷婷综合激情五月色 | 午夜精品一区二区三区在线观看 | 亚洲精品久久 | 中文天堂在线一区 | 国产成人精品一区二区三区网站观看 | 91精品国产高清一区二区三区 | 黄色网址av | 一级h片| 99爱在线免费观看 | 久久美女视频 | 国产99久久 | 亚洲乱码一区二区三区在线观看 | 国产精品a级 | 久久久久无码国产精品一区 | 美女久久 | 国产精品日日摸夜夜添夜夜av | 欧美日韩一区二区三区在线观看 | 精品国产视频 | 国产精品色综合 | www国产成人免费观看视频,深夜成人网 | 51ⅴ精品国产91久久久久久 | 成年人国产在线观看 | 久久se精品一区精品二区 | 亚洲一区二区不卡在线观看 | 成人免费视频 | 久久高清亚洲 | 精品久久电影 | 超碰地址 | 特黄视频 | 日韩中文一区二区 | 精精国产xxxx视频在线 | 国产天堂| 日日网| 91久色 | 九色 在线 | 亚洲国产成人精品女人久久久 | 国产成人精品久久二区二区91 | 欧美国产精品一区二区三区 | 国产精品久久久久久久久久妞妞 |