Android中interface的用法

前言

在安卓開發(fā)的過程中,發(fā)現(xiàn)interface是一個非常好用的東西,小編在這里就來小小的說一波interface的使用方法。根據實踐,小編發(fā)現(xiàn)interface的主要使用方法有兩種,一個是定義接口,一種是回調。

定義接口

什么是接口

這里講一下定義接口。首先,我們要知道什么是接口?接口就是定義的可以供別人使用的方法。這接口中是看不到這個方法是怎么實現(xiàn)的,如果想看到這個方法是怎么實現(xiàn)的,就需要去實現(xiàn)文件看。這樣保證了可供別人使用的方法集合簡潔易看。舉個例子:像iOS中OC定義一個類的.h文件和.m文件之間的關系。

Android中怎么用interface定義接口

定義接口其實很簡單,首先創(chuàng)建一個interface,并在里面定義你想作為接口的方法,如下:

public interface interface_Api {

    static interface_Api shared() {
        return interface_Api_Implementation.getInstance();
    };

    String hey();
}

然后再創(chuàng)建一個類,在類名后面加一個implements關鍵詞,再把想要實現(xiàn)的接口類寫上,最后完成自己定義的接口想做的事情即可,如下:

public class interface_Api_Implementation implements interface_Api {
    private static final interface_Api_Implementation ourInstance = new interface_Api_Implementation();

    public static interface_Api_Implementation getInstance() {
        return ourInstance;
    }

    private interface_Api_Implementation() {
    }

    @Override
    public String hey() {
        return "Hello";
    }
}

調用起來也十分方便,這里小編為了方便,使用了單例來定義接口和類(注:接口使用單例需要gradle中sourceCompatibility版本至少為1.8),調用方法如下:

String string = interface_Api.shared().hey();
Log.i("interface-1",string);

實現(xiàn)回調

什么是回調

回調就是當你完成了某些操作時,你需要返回一些信息,這些信息可以通過回調來獲取。舉個例子:像iOS中的Block和Delegate。

Android中怎么用interface實現(xiàn)回調

首先,創(chuàng)建一個interface,并定義回調時所回調的方法,如下:

public interface interface_Listener {
    void Receive(String message);
}

然后在需要用這個interface回調的類中定義這個interface,并實現(xiàn)set方法,將需要回調的地方將值傳進去,如下:

public class Listener_Test {
    interface_Listener listener;
    Timer timer;
    public void setListener(interface_Listener listener) {
        this.listener = listener;
    }

    int i = 0;
    public void start() {
        if (timer == null) {
            timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    listener.Receive(String.format("收到數字%s",i));
                    i++;
                }
            }, 0, 1000);
        }
    }

    public void end() {
        if (timer != null) {
            timer.cancel();
            timer = null;
            i = 0;
        }
    }
}

最后在需要回調的類中后面加一個implements關鍵詞,設置set方法,將需要回調的方法實現(xiàn)即可。如下:

public class MainActivity extends AppCompatActivity implements interface_Listener{

    Listener_Test test_class = new Listener_Test();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        test_class.setListener(this);
    }

    public void two(View view){
        test_class.start();
    }

    public void three(View view){
        test_class.end();
    }

    @Override
    public void Receive(String message) {
        Log.i("interface-2",message);
    }
}

這篇文章到這里就結束了,寫的不好的地方歡迎大家指出,Demo下載地址:Demo。最后,希望這篇文章對各位看官們有所幫助。如果看官們可以給小編一個小小的支持那就更好了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,812評論 25 709
  • 愿在以后的日子里 遇到挫折波瀾不驚 勇敢一點
    黃黃410閱讀 213評論 0 0
  • 前幾天告訴哥哥我想去廣州參加一個培訓,因為爸爸沒有時間陪同一起去,我只能帶上弟弟和阿姨而他就和爸爸呆在家里...
    小咕咚和小太陽的麻麻閱讀 417評論 0 0
  • 可鑒者:1.臣等才有限而道無窮,心欲言而口不逮,以此自愧,莫知所為 所以說善言者比善思者往往混得更好,就似胸口堵了...
    德羅巴_bfc9閱讀 610評論 0 0

友情鏈接更多精彩內容