前言
在安卓開發(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。最后,希望這篇文章對各位看官們有所幫助。如果看官們可以給小編一個小小的支持那就更好了。