編輯:關於Android編程
在Android開發中經常用到回調機制,其中最典型的就是控件被觸發的實現方式,簡單而言,如Button被Click後,是系統調用了OnClick方法,而我們為Button注冊了OnClickListener監聽器,當被觸發Click後,OnClickListener中的OnClick方法就會被回調,我們就能在其中執行相應操作了。
下面舉一個簡單的例子介紹回調的實現方式:
回調函數使用的簡單例子
程序員A寫了一段程序(程序a),其中預留有回調函數接口,並封裝好了該程序。程序員B要讓a調用自己的程序b中的一個方法,於是,他通過a中的接口回調自己b中的方法。目的達到。
在JAVA中通過接口(interface)來實現定義回調函數。
下面是程序員A的程序a
public class A {
public CallBack mCallBack;
public void setCallfuc(MyCallInterface mc){
this.mc= mc;
}
public void call(){
this.mCallBack.method();
}
}
定義一個接口,以便程序員B根據我的定義編寫程序實現接口。
public interface CallBack {
public void method();
} 於是,程序員B只需要實現這個接口就能達到回調的目的了:
public class B implements MyCallInterface {
//實現這個接口
@override
public void method() {
System.out.println("當程序a調用了method方法時我就會答應出來");
}
} //測試方法
public static void main(String args[]) {
A a = new A();
//相當於把A和B通過CallBack接口建立了聯系
a.setListener(new B());
//調用了該方法,B中的接口方法打印
a.call();
}
回調函數經典示例
使用java回調函數來實現一個測試函數運行時間的工具類:
public class TestObject {
/**
* 一個用來被測試的方法,進行了一個比較耗時的循環
*/
public static void testMethod(){
for ( int i= 0 ; i< 100000000 ; i++){
}
}
/**
* 一個簡單的測試方法執行時間的方法
*/
public void testTime(){
long begin = System.currentTimeMillis(); //測試起始時間
testMethod(); //測試方法
long end = System.currentTimeMillis(); //測試結束時間
System.out.println("[use time]:" + (end - begin)); //打印使用時間
}
public static void main(String[] args) {
TestObject test=new TestObject();
test.testTime();
}
} 大家看到了testTime()方法,就只有"//測試方法"是需要改變的,下面我們來做一個函數實現相同功能但更靈活:
首先定一個回調接口:
public interface CallBack {
//執行回調操作的方法
void execute();
} 定義工具類
public class Tools {
/**
* 測試函數使用時間,通過定義CallBack接口的execute方法
* @param callBack
*/
public void testTime(CallBack callBack) {
long begin = System.currentTimeMillis(); //測試起始時間
callBack.execute(); ///進行回調操作
long end = System.currentTimeMillis(); //測試結束時間
System.out.println("[use time]:" + (end - begin)); //打印使用時間
}
public static void main(String[] args) {
Tools tool = new Tools();
tool.testTime(new CallBack(){
//定義execute方法
public void execute(){
//這裡可以加放一個或多個要測試運行時間的方法
TestObject.testMethod();
}
});
}
Android_自定義view動畫按鈕
昨天偶偶然看見UI 給的一個交互的效果,原圖如下就是下面的loginbutton,於是大概模仿了一下,並沒有做這個UI的全部效果,有興趣的可以完善後面展開的效果這個Vie
android百度定位後顯示在地圖上點擊彈出氣泡
1.到百度地圖頁面申請key,注意key和項目包名和數字簽名一一對應的。http://developer.baidu.com/map/index.php?title=%E
android開發教程之wifi開發示例
1、 WIFI網卡的狀態WIFI網卡的狀態信息都以整型變量的形式存放在 android.net.wifi.WifiManager 類中,有以下狀態:WIFI_STATE_
使用okhttp3做Android圖片框架Picasso的下載器和緩存器
最近項目裡把圖片加載框架從xUtils換到了Picasso,一些下載和緩存的策略也因此發生變化,Picasso的緩存沒有xUtils自動化那麼高,使用起來遇到了一些困難,