在做应用统计时我们可能需要在获取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());
}
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());
}
最终效果图如上。
来源:oschina
链接:https://my.oschina.net/u/138488/blog/228784