面試題精選:Android埋點,減少對業務代碼的如侵!

前言

前幾天去參加了一場面試。面試的題目大多很基礎,有一道關於埋點的問題,面試官問我如果不用第三方SDK進行埋點,自己埋點的話,如何減少埋點對業務代碼的ru侵。

當時沒想太多,就說創建一個 BaseView 類,在這個類中進行埋點的操作,然後使需要進行埋點操作的 View 繼承這個 Base 類。後來想想,這個方案其實存在很多問題,因爲讓每個需要埋點的 View 去繼承 BaseView 類,說明 View 需要自定義,會耗費很多的時間和精力,對於自帶的 Button 等控件的埋點,這種方法又無法實現。所以說,其實在這個問題上,我答的不是很好,但可能之前的幾個問題答得不錯,面試官也沒說什麼,就說行,然後繼續問下面的問題。

對於埋點,減少業務代碼ru侵這個問題,我回來想了想,或許用代理模式來實現,會是一個很好的選擇。

埋點

先來說說埋點的概念,埋點就是在用戶使用APP時,對用戶的操作行爲進行記錄,比如用戶點擊了一個 Button 然後跳轉至了哪個界面,然後在這個界面上又點擊了哪個控件,等等等一系列操作進行記錄,然後APP將行爲記錄傳至後臺,這就是埋點。

利用這些信息,可以對用戶進行數字畫像,根據用戶的行爲特點,針對性地提供功能服務,以及對軟件的優化等。現在市場上已經有很多第三方的埋點SDK,比如說友盟的用戶行爲數據檢測。

面試題精選:Android埋點,減少對業務代碼的如侵!

這些第三方SDK,基本上不用對自己的業務代碼進行改變,就可以進行埋點的操作,而如果我們自己來實現埋點的話,基本上的思路就是,在用戶點擊控件的時候,對用戶這個行爲進行記錄,然後進行一些信息處理操作,代碼來實現就是。

mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //埋點操作
                actionRecord();
                //跳轉至另外一個界面
                startActivity(new Intent(mContext,AnotherActivity.class));
            }
        });

actionRecord() 裏是一些埋點相關的操作,我們可以看到,這個操作已經ru侵到了我們的業務代碼中,埋的點如果少還好,如果有大量的點要埋,這種實現方式後期維護將變的十分困難,因此需要另外一種方法來實現。

我們考慮使用代理模式的方式,因爲埋點的操作基本上是對用戶的點擊事件進行記錄,所以我們可以創建一個 OnClickListener 的代理。

/**
 * Created by chaochaowu on 2018/9/15.
 */

public class OnClickListenerProxy implements View.OnClickListener {

    private View.OnClickListener listener;

    public OnClickListenerProxy(View.OnClickListener listener) {
        this.listener = listener;
    }

    @Override
    public void onClick(View v) {
        //埋點操作
        actionRecord();
        //調用在業務代碼中定義的 onClick 操作
        listener.onClick(v);
    }

    private void actionRecord(){
        //一些埋點的操作
    }
}

將埋點相關的操作全都放入這個代理類中,在業務代碼中,調用如下。

 mButton.setOnClickListener(new OnClickListenerProxy(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //跳轉至另外一個界面
                startActivity(new Intent(mContext,AnotherActivity.class));
            }
        }));

可以發現,業務代碼中沒有出現埋點相關的操作,我們由此減少了埋點操作對業務代碼的ru侵,埋點的操作交由代理類實現,如果我們需要對埋點操作進行修改,只要對代理類中的方法進行修改,而不需要去每個埋點的地方修改。

以上便是減少埋點對業務代碼ru侵的一種方式,不過,如果項目真的有埋點的需求,我會優先考慮使用第三方(逃。

面試題精選:Android埋點,減少對業務代碼的如侵!

###最後

最後不管怎麼樣,不論是什麼樣的大小面試,要想不被面試官虐的不要不要的,只有刷爆面試題題做好全面的準備,當然除了這個還需要在平時把自己的基礎打紮實,這樣不論面試官怎麼樣一個知識點裏往死裏鑿,你也能應付如流啊~

快來獲取學習資料提升自己去挑戰一下BAT面試難關吧!

加羣:887084983 即可免費領取!

Android 學習,面試文檔,視頻收集大整理

面試題精選:Android埋點,減少對業務代碼的如侵!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章