android同时监听全部activity生命周期状态实现

   在作应用统计时咱们可能须要在获取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());
	}


  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的状态了 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());
	}

 

最终效果图如上。

官网www.apkplug.com

相关文章
相关标签/搜索