@@ -254,13 +254,54 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
254254 methodVisitor. visitVarInsn(ASTORE , localId)
255255 localIds. add(localId)
256256 }
257+ if (transformHelper. isHookOnMethodEnter) {
258+ handleCode()
259+ }
257260 }
258261
259262 @Override
260263 protected void onMethodExit (int opcode ) {
261264 super . onMethodExit(opcode)
265+ if (! transformHelper. isHookOnMethodEnter) {
266+ handleCode()
267+ }
268+ }
262269
263- if (isSensorsDataIgnoreTrackOnClick || isHasInstrumented || classNameAnalytics. isSensorsDataAPI) {
270+ void handleCode (){
271+ if (isHasInstrumented || classNameAnalytics. isSensorsDataAPI) {
272+ return
273+ }
274+
275+ /**
276+ * Fragment
277+ * 目前支持以下 Fragment 页面浏览事件:
278+ * android/app/Fragment,android/app/ListFragment, android/app/DialogFragment,
279+ * android/support/v4/app/Fragment,android/support/v4/app/ListFragment,android/support/v4/app/DialogFragment,
280+ * androidx/fragment/app/Fragment,androidx/fragment/app/ListFragment,androidx/fragment/app/DialogFragment
281+ */
282+ if (SensorsAnalyticsUtil . isInstanceOfFragment(mSuperName)) {
283+ SensorsAnalyticsMethodCell sensorsAnalyticsMethodCell = SensorsAnalyticsHookConfig . FRAGMENT_METHODS . get(nameDesc)
284+ if (sensorsAnalyticsMethodCell != null ) {
285+ visitedFragMethods. add(nameDesc)
286+ if (isSetUserVisibleHint) {
287+ methodVisitor. visitVarInsn(ALOAD , 0 )
288+ methodVisitor. visitVarInsn(ILOAD , variableID)
289+ methodVisitor. visitMethodInsn(Opcodes . INVOKESTATIC , SensorsAnalyticsHookConfig . SENSORS_ANALYTICS_API , sensorsAnalyticsMethodCell. agentName, sensorsAnalyticsMethodCell. agentDesc, false )
290+ } else if (localIds != null ){
291+ methodVisitor. visitVarInsn(ALOAD , 0 )
292+ for (localId in localIds) {
293+ methodVisitor. visitVarInsn(ALOAD , localId)
294+ }
295+ methodVisitor. visitMethodInsn(Opcodes . INVOKESTATIC , SensorsAnalyticsHookConfig . SENSORS_ANALYTICS_API , sensorsAnalyticsMethodCell. agentName, sensorsAnalyticsMethodCell. agentDesc, false )
296+ } else {
297+ visitMethodWithLoadedParams(methodVisitor, Opcodes . INVOKESTATIC , SensorsAnalyticsHookConfig . SENSORS_ANALYTICS_API , sensorsAnalyticsMethodCell. agentName, sensorsAnalyticsMethodCell. agentDesc, sensorsAnalyticsMethodCell. paramsStart, sensorsAnalyticsMethodCell. paramsCount, sensorsAnalyticsMethodCell. opcodes)
298+ }
299+ isHasTracked = true
300+ return
301+ }
302+ }
303+
304+ if (isSensorsDataIgnoreTrackOnClick) {
264305 return
265306 }
266307
@@ -320,34 +361,6 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
320361 return
321362 }
322363
323- /**
324- * Fragment
325- * 目前支持以下 Fragment 页面浏览事件:
326- * android/app/Fragment,android/app/ListFragment, android/app/DialogFragment,
327- * android/support/v4/app/Fragment,android/support/v4/app/ListFragment,android/support/v4/app/DialogFragment,
328- * androidx/fragment/app/Fragment,androidx/fragment/app/ListFragment,androidx/fragment/app/DialogFragment
329- */
330- if (SensorsAnalyticsUtil . isInstanceOfFragment(mSuperName)) {
331- SensorsAnalyticsMethodCell sensorsAnalyticsMethodCell = SensorsAnalyticsHookConfig . FRAGMENT_METHODS . get(nameDesc)
332- if (sensorsAnalyticsMethodCell != null ) {
333- visitedFragMethods. add(nameDesc)
334- if (isSetUserVisibleHint) {
335- methodVisitor. visitVarInsn(ALOAD , 0 )
336- methodVisitor. visitVarInsn(ILOAD , variableID)
337- methodVisitor. visitMethodInsn(Opcodes . INVOKESTATIC , SensorsAnalyticsHookConfig . SENSORS_ANALYTICS_API , sensorsAnalyticsMethodCell. agentName, sensorsAnalyticsMethodCell. agentDesc, false )
338- } else if (localIds != null ){
339- methodVisitor. visitVarInsn(ALOAD , 0 )
340- for (localId in localIds) {
341- methodVisitor. visitVarInsn(ALOAD , localId)
342- }
343- methodVisitor. visitMethodInsn(Opcodes . INVOKESTATIC , SensorsAnalyticsHookConfig . SENSORS_ANALYTICS_API , sensorsAnalyticsMethodCell. agentName, sensorsAnalyticsMethodCell. agentDesc, false )
344- } else {
345- visitMethodWithLoadedParams(methodVisitor, Opcodes . INVOKESTATIC , SensorsAnalyticsHookConfig . SENSORS_ANALYTICS_API , sensorsAnalyticsMethodCell. agentName, sensorsAnalyticsMethodCell. agentDesc, sensorsAnalyticsMethodCell. paramsStart, sensorsAnalyticsMethodCell. paramsCount, sensorsAnalyticsMethodCell. opcodes)
346- }
347- isHasTracked = true
348- return
349- }
350- }
351364
352365 /**
353366 * Menu
0 commit comments