안드로이드 AOP + databing는 침입 원활한 타점을 클릭 달성

원활한 타점 GitHub의 소스

1. 전제

      비즈니스는 종종 모든 이벤트 통계에 대처하기 위해 수행해야 할 수도, 가장 쉬운 방법은 각 클릭에 자신의 코드를 추가하는 것입니다, 또는 그의 견해는, 이들은 비즈니스 부부 관련된 전체 상속은 몇 가지 특별한 점 이외에, 너무 높은 대부분의 포인트는

점을 달성하기 위해 범용 방법이 될 수 있습니다, AOP의 컴파일하기 전에 사업에서 벗겨 측면과 직접 서버 또는 직접 PM 문서 스크립트 눈에 띄는 동적 읽기에서 전송도 점 데이터를 사용하여 점은 자동으로 분사 Gradle을 달성하기 위해

 

 

2. RBI

 한. 통용 점

     일반적으로 인터페이스와 관계가 있고, 우리는 공통 인터페이스를 달성 할 수있는 활성 단편은, 일반적인 방법으로 인터페이스 포인트, 이것은 일반적으로 다음의 기본 클래스 구현 될 수있는 현재의 포인트는 AOP 모듈을 해당 데이터

  당신은 완전히 분리 할 심지어 반사의 방법으로 일반적인 타점 데이터를 얻을 수있는 경우

II. 특수 요소 포인트

  예를 들어, 우리는 시간 등을 클릭, 목록에서 현재 요소, 또는 현재 요소의 이름의 위치를 ​​알 필요가

  여기에 바인딩 데이터 바인딩에 의해 기술 된 이벤트가, 당신이 setOnClickListener에서 인터페이스를 사용하는 경우, 다음 글로벌 사용 AOP를 줄일 수 일반적이다 있습니다

  

        <텍스트 뷰 안드로이드 : layout_width = "wrap_content"안드로이드 : layout_height = "wrap_content" 
                  안드로이드 : 텍스트 = "@ {module.name}" 
                  응용 프로그램 : bindClickData = '@ { "이름 :"+ module.name + "위치 :"+ 위치} 
                  로이드 : TEXTSIZE = "20sp" 
                  로이드 :의 onclick = "@ {(뷰) -> click.onMainClick (모듈 뷰)}" 
                  로이드 : 패딩 = "20dp"/>

  

응용 프로그램 : bindClickData의 주요 항목이, 자신의 일부 매개 변수 전달하는 사용자 정의 데이터 바인딩 이벤트이며, 
당신이 날 목록에있는 항목의 주요 현재 이름과 위치를 통과 볼 수있는 곳은

공용 클래스 BindAppUtils { 
    @BindingAdapter ( "bindClickData") 
    공공 정적 무효 bindClickData (보기보기, String 데이터) { 
        Log.e ( "린", "bindData ="+ 데이터); 
        view.setTag (R.id.snow_click_id 데이터); 
    } 
}

  이 view.setTag에 의해 정의 된 자기 바인딩 이벤트 우리가 타점 데이터를 볼 특별한 캐시를 넣어이다

안드로이드 : 온 클릭은 일반적인 클릭 이벤트의이다, 
데이터 바인딩은 모든 이벤트의 generatedJava 디렉토리에 갈 것입니다 클릭
패키지 이름 .generated.callback.OnClickListener

    @Before는 ( "실행 (com.lin.aopdemo.generated.callback.OnClickListener.onClick * (...))") 
    공공 무효 onCommonClick (joinpoint를 joinpoint를)가 발생하는 Throwable { 
        보기보기 = (뷰) joinPoint.getArgs () 0 ]; 
        Log.e ( "LIN", "의 onclick ="+ joinPoint.getThis ()); 
        경우 (ClickInter instanceof를 view.getContext ()) { 
            ClickModel.INSTANCE.doClick (뷰 ((ClickInter) view.getContext ()) getPageParam ().); 
        } 
    }

  여기에 방법 섹션은 해당 클릭보기,이다, 여기 당신이 완전히 분리하려는 경우, 인터페이스의 일반적인 매개 변수를 물론 getPageParam 반사 ()를 획득 할 수 있으며, 직접 액세스 성능은 반사보다 더 나은 것

 

    재미에서는, doClick (보기 :보기, m :지도 <문자열, 문자열>) { 
        var에 데이터 = view.getTag (R.id.snow_click_id)와 같은 문자열 
        VAR지도 = mutableMapOf <문자열, 문자열> () 
        map.putAll (m); 
        데이터 .split ( ",") {대해 forEach?. 
            (it.contains ( ":")) 경우에 { 
                map.put (it.split ( ":") [0] it.split ( ":") 1 ]) 
            } 
        } 
        Log.e ( "LIN"map.toString ()) 
    }

  우리가 view.getTag에 의한 특수 데이터 전면 databing에 가서 얻는 특정한 방법을 클릭, 모든 타점을 완료하기 위해지도에 박제

    돌아 가기 플랫폼 특정 통해 데이터가 자신을 정의 할 수 있습니다 잊지 통과

DETAILED 소스는 상부, 비교적 간단한 예에서 볼 수 연장이 아이디어의 특정 요구에 따라 할 수있다

추천

출처www.cnblogs.com/dikeboy/p/10959918.html