ActivityLifecycleCallbacks 的简单使用
转载自 http://blog.csdn.net/tongcpp/article/details/40344871
ActivityLifecycleCallbacks是什么?
- Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理。
为什么用ActivityLifecycleCallbacks?
- 以往若需监测Activity的生命周期事件代码,你可能是这样做的,重写每一个Acivity的onResume(),然后作统计和处理:
- @Override
- protected void onResume() {
- super.onResume();
- //TODO 处理和统计代码
- Log.v(TAG, "onResume");
- Logger.v(TAG, "onResume");
- Logging.v(TAG, "onResume");
- ...
- }
- ActivityLifecycleCallbacks接口回调可以简化这一繁琐过程,在一个类中作统一处理
ActivityLifecycleCallbacks怎么用?
- android.app.Application.ActivityLifecycleCallbacks
- 要求API 14+ (Android 4.0+)
- 继承Application
- public class BaseApplication extends Application
- 在AndroidManifest里起用自定义Application
- <application android:name=".global.BaseApplication"
重写Application的onCreate()方法,或在Application的无参构造方法内,调用Application.registerActivityLifecycleCallbacks()方法,并实现ActivityLifecycleCallbacks接口
- public void onCreate() {
- super.onCreate();
- this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
- @Override
- public void onActivityStopped(Activity activity) {
- Logger.v(activity, "onActivityStopped");
- }
- @Override
- public void onActivityStarted(Activity activity) {
- Logger.v(activity, "onActivityStarted");
- }
- @Override
- public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
- Logger.v(activity, "onActivitySaveInstanceState");
- }
- @Override
- public void onActivityResumed(Activity activity) {
- Logger.v(activity, "onActivityResumed");
- }
- @Override
- public void onActivityPaused(Activity activity) {
- Logger.v(activity, "onActivityPaused");
- }
- @Override
- public void onActivityDestroyed(Activity activity) {
- Logger.v(activity, "onActivityDestroyed");
- }
- @Override
- public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
- Logger.v(activity, "onActivityCreated");
- }
- });
- };
运行结果(Logcat日志)
- 10-21 14:32:57.722: V/WelcomeActivity(8085): onActivityCreated
- 10-21 14:32:57.762: V/WelcomeActivity(8085): onActivityStarted
- 10-21 14:32:57.762: V/WelcomeActivity(8085): onActivityResumed
- 10-21 14:32:59.164: V/WelcomeActivity(8085): onActivityPaused
- 10-21 14:32:59.194: V/MainActivity(8085): onActivityCreated
- 10-21 14:32:59.224: V/MainActivity(8085): onActivityStarted
- 10-21 14:32:59.224: V/MainActivity(8085): onActivityResumed
- 10-21 14:32:59.735: V/WelcomeActivity(8085): onActivityStopped
- 10-21 14:32:59.735: V/WelcomeActivity(8085): onActivityDestroyed
- 10-21 14:33:06.502: V/MainActivity(8085): onActivityPaused
- 10-21 14:33:06.612: V/MainActivity(8085): onActivityStopped
- 10-21 14:33:06.612: V/MainActivity(8085): onActivityDestroyed
ActivityLifecycleCallbacks的拓展用法
本次初探仅尝试使用Log日志工具作简要测试,如需满足较复杂的统计或调试需求时,此法可能会大大减少插入代码量,提高效率
API仅在14+版本上提供此接口回调,Android 4.0以下系统如何使用?
- API仅针对上述几个Activity的生命周期事件留出了接口回调,可能已无法满足日益过渡为使用Fragment的今日需求, 如何在更大范围内应用LifecycleCallbacks?
ActivityLifecycleCallbacks 的简单使用的更多相关文章
- Android使用ActivityLifecycleCallbacks管理Activity和区分App前后台
一.ActivityLifecycleCallbacks接口介绍 官方地址:https://developer.android.com/reference/android/app/Applicatio ...
- 【造轮子】打造一个简单的万能Excel读写工具
大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...
- 在Openfire上弄一个简单的推送系统
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 使用 Nodejs 搭建简单的Web服务器
使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...
- ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面
前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...
随机推荐
- 基于Emgucv,C#的图片旋转方式
/// <summary> /// 图片旋转 --百度 旋转仿射 /// </summary> /// <param name="modelImage" ...
- Windows 2003 防火墙开启后无法访问FTP解决办法
最近遇到一个比较郁闷的问题,服务器开启防火墙后电脑就无法访问服务器的防火墙,但是防火墙又不能关,在例外中添加端口21也不管用. 后来在网上终于找到了一个解决方案,可以在不关掉防火墙的情况下访问服务器的 ...
- elasticsearch简单操作
现在,启动一个节点和kibana,接下来的一切操作都在kibana中Dev Tools下的Console里完成 创建一篇文档 将小黑的小姨妈的个人信息录入elasticsearch.我们只要输入 PU ...
- vue font-icon 图标
1.vue 游览器左上角小图标 把.ico文件放在根目录下的static文件夹下,然后link标签引入 <link rel="shortcut icon" href=&quo ...
- 4.20 Linux01
2019-4-20 21:04:14 day102linux 开始认真学习Linux ,因为服务器部署还是得会Linux 开始整理一下笔记 等把Linux全部学完后 然后写个文章整理一下! Linux ...
- dedecms给图片加水印覆盖整张图片
位置: /include/image.class.php $wmwidth = $imagewidth - $logowidth; $wmheight = $imageheight - $logohe ...
- javascript 零碎笔记
使用 live-serve 这个工具,可以热更新 js 代码 逻辑运算符: 常用于单边条件判断,比如 真判断(获取子属性) {error && <div className=&q ...
- macOS实现视频转音频以及音频拼接
macOS实现视频转音频以及音频拼接 ffmpeg 的安装 终端输入以下指令: brew install ffmpeg 视频转音频 终端输入以下指令: ffmpeg -i 视频名称.flv -vn - ...
- 对于bilibili主页head部分的代码的总结以及疑问。
1.lang=zh-Hans: lang代表languages的意思,VSCode创建出来的网页模板是lang=en,en代表english的意思,zh代表中文,单一的zh是废弃的语法,Hans代表中 ...
- Android Studio 全局内替换字符串
Ctrl+Shift+R