在作应用统计时咱们可能须要在获取activity的生命周期状态,之前的方式是咱们须要重写每个activity的onResume() 等函数而后埋点。如今能够利用apkplug框架的activitylifecycle将全部activity状态信息收集到一个类里面,进行统一的收集。 java
demo代码下载地址 http://git.oschina.net/plug/apkplugBundles/tree/master/ActivityLifecycle git
你能够经过apkplugdemo 本地安装的方式导入这个插件进行体验 框架
apkplugdemo.apk 下载地址 ide
ActivityLifecycle.apk 下载地址 函数
效果图: 工具
插件开发: this
1.按照apkplug插件开发的基本规则加入相应的osgi1.6.3.jar ,assets/plugin.xml配置文件 (activitylifecycle功能 需Bundle.1.6.3.jar以上 osgi1.6.3.jar才有) .net
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的状态了 code
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()); }
最终效果图如上。