在作應用統計時咱們可能須要在獲取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()); }
最終效果圖如上。