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

相關文章
相關標籤/搜索