自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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ì)象上,在無(wú)需使用的時(shí)候,還需要調(diào)用 unregisterActivityLifecycleCallbacks() 進(jìn)行解注。

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

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

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

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

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

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

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

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

2、一鍵退出所有頁(yè)面

既然可以對(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 整體來(lái)說(shuō),還是很方便實(shí)用的。但是它也有一些缺陷的地方,例如有 Api 限制、無(wú)法監(jiān)聽到 Fragment 的生命周期等。

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

既然需要兼容 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)起來(lái)覺得有點(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é)任編輯:武曉燕 來(lái)源: 51CTO專欄
相關(guān)推薦

2015-05-18 15:37:28

2013-04-17 10:30:07

GlassGoogle

2011-06-16 09:31:21

ActivityAndroid

2012-05-21 15:34:48

H3C無(wú)線路由

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生命周期

2009-06-24 10:47:55

JSF生命周期

2012-06-20 10:29:16

敏捷開發(fā)

2013-08-19 17:03:00

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

2021-07-19 05:52:29

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

2022-06-01 09:25:16

嵌套生命周期智能技術(shù)工業(yè)資產(chǎn)

2024-05-28 07:55:31

SpringBean用域

2019-10-24 15:23:04

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

2023-08-24 21:49:54

人工智能高端算法工程師

2022-04-19 07:20:24

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

2012-11-22 16:38:08

掌上齊魯

2023-10-07 00:05:07

2014-07-16 13:39:30

Windows Pho
點(diǎn)贊
收藏

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