編輯:關於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(); } }); }
昨天偶偶然看見UI 給的一個交互的效果,原圖如下就是下面的loginbutton,於是大概模仿了一下,並沒有做這個UI的全部效果,有興趣的可以完善後面展開的效果這個Vie
1.到百度地圖頁面申請key,注意key和項目包名和數字簽名一一對應的。http://developer.baidu.com/map/index.php?title=%E
1、 WIFI網卡的狀態WIFI網卡的狀態信息都以整型變量的形式存放在 android.net.wifi.WifiManager 類中,有以下狀態:WIFI_STATE_
最近項目裡把圖片加載框架從xUtils換到了Picasso,一些下載和緩存的策略也因此發生變化,Picasso的緩存沒有xUtils自動化那麼高,使用起來遇到了一些困難,