文档章节

android同时监听所有activity生命周期状态实现

梁大帅
 梁大帅
发布于 2014/04/30 12:35
字数 501
阅读 6114
收藏 15
点赞 0
评论 3

   在做应用统计时我们可能需要在获取activity的生命周期状态,以前的方式是我们需要重写每一个activity的onResume() 等函数然后埋点。现在可以利用apkplug框架的activitylifecycle将所有activity状态信息收集到一个类里面,进行统一的收集。

  demo代码下载地址 http://git.oschina.net/plug/apkplugBundles/tree/master/ActivityLifecycle

你可以通过apkplugdemo 本地安装的方式导入这个插件进行体验

apkplugdemo.apk 下载地址

ActivityLifecycle.apk   下载地址

效果图:

 

插件开发:

   1.按照apkplug插件开发的基本规则加入相应的osgi1.6.3.jar ,assets/plugin.xml配置文件 (activitylifecycle功能 需Bundle.1.6.3.jar以上 osgi1.6.3.jar才有) 

   2.编写Activity状态信息收集类  可以在这个类中将收集到的activity状态信息保持上或传递给统计工具   

public class BundleActivityLifecycleCallbacksImp implements BundleActivityLifecycleCallbacks{

	@Override
	public void onActivityCreated(Activity arg0, Bundle arg1) {
		System.out.println("Created:"+arg0.getClass().getCanonicalName());
		//保持信息到StringBuffer中 在MainActivity中显示
		ActivityLog.addLog("Created:"+arg0.getClass().getCanonicalName());
	}

	@Override
	public void onActivityDestroyed(Activity arg0) {
		System.out.println("Destroyed:"+arg0.getClass().getCanonicalName());
		ActivityLog.addLog("Destroyed:"+arg0.getClass().getCanonicalName());
	}


  3.在插件SimpleBundle implements BundleActivator 类中查询"org.apkplug.Bundle.RegActivityLifecycleCallbacks"服务(该服务框架启动时就注册了)
public void start(BundleContext context) throws Exception
    {
        //初始化activity监听器
        imp=new BundleActivityLifecycleCallbacksImp();
        ServiceReference ref  =  context.getServiceReference(RegActivityLifecycleCallbacks.class.getName());
        if  (ref  !=   null ) {
        	//查找到服务
        	RegActivityLifecycleCallbacks service  =  (RegActivityLifecycleCallbacks) context.getService(ref);
        	 if  (service  !=   null ) {
        		//将BundleActivityLifecycleCallbacksImp activity状态监听器注册到ActivityLifecycle管理器中
        		 service.registerActivityLifecycleCallbacks(imp);
        		 context.ungetService(ref);
        	 }
        }
    }

  4.以上步骤完成以后当插件启动以后就会注册一个监听其到框架中,然后就可以监听到activity的状态了

  5.显示activity状态信息

    MainActivity.java

  

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView log=(TextView) this.findViewById(R.id.log);
		log.setText(ActivityLog.getLog().toString());
	}

 

最终效果图如上。

官网www.apkplug.com

© 著作权归作者所有

共有 人打赏支持
梁大帅
粉丝 49
博文 45
码字总数 27883
作品 1
丰台
程序员
加载中

评论(3)

地图对角线
请问这个监控服务何时启动?如何手动启动和关闭?谢谢!
地图对角线
你好
霞女
霞女
[Android] Activity生命周期

Actvity 堆栈 每个Actvity的状态由它所在Activity栈中的位置所决定,所有当前正在运行的Actvity将遵循照后进先出的原则。当一个新的 Activity启动,当前的Activity将移至堆栈的顶部,如果用户...

枫兮兮
2014/02/25
0
0
Activity生命周期——Mars Android开发视频之第二季第一集(重)

1· Activity的生命周期(一) 1.1 如何定义多个Activity 1 - 新建一个类,继承Activity 2- 重写Activity中的onCreate方法 3- 创建布局文件: 4- 在onCreate方法中调用布局文件 5- 在主配置文...

周田
2015/08/22
0
0
Android开发学习笔记(五):Starting an Activity

Starting an Activity 不像其他的编程模式中,应用程序是由main()方法发起的,Android系统启动代码在一个activity实例通过调用的回调方法,对应于特定阶段的生命周期。有一系列回调方法用于启...

AllenYao
2013/01/07
0
1
android Fragments详解六:处理fragement的生命周期

把条目添加到动作栏 你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptionManu()来完...

晨曦之光
2012/03/12
0
0
android Fragments详解六:处理fragement的生命周期

把条目添加到动作栏 你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptionManu()来完...

jxlgzwh
2013/07/19
0
0
Android四大基本组件介绍与生命周期

Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。 一:了解四大基本组件 Activity : 应用程序中,一个Activity通常就是一个单独的...

tianlonn
2014/04/14
0
0
Android Activity的生命周期详解

Activity是由Activity栈进管理,当来到一个新的Activity后,此Activity将被加入到Activity栈顶,之前的Activity位于此Activity底部。Acitivity一般意义上有四种状态: 1.当Activity位于栈顶时...

恰同学少年
2015/07/27
0
0
Android零基础入门第86节:探究Fragment生命周期

一个Activity可以同时组合多个Fragment,一个Fragment也可被多个Activity 复用。Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期...

鑫鱻
2017/10/30
0
0
Activity 初步(大部分翻译自SDK)

(内容:如何创建、使用activity; activity生命周期。) Activity Activity 是一个为用户提供交互接口的组件,每个activity都会有一个window来显示自己的界面。 应用可以由多个互相“弱关联...

wilsonchan
2012/11/23
0
0
android之Fragment(官网资料翻译)

Fragment要点 Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。 在Activity运行过程中,可以添加、移除...

随智阔
2013/05/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
39分钟前
1
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
0
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
1
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
0
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
今天
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
今天
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
0
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部