android 回呼函數的使用

來源:互聯網
上載者:User

標籤:

 

// activity 之間方法調用的橋樑

public class ActivityCallBridge {

    static ActivityCallBridge mBridge;

    private OnMethodCallback mCallback;

    private ActivityCallBridge() {

    }

    public static ActivityCallBridge getInstance() {

        if (mBridge == null) {

            mBridge = new ActivityCallBridge();

        }

        return mBridge;

    }

    public void invokeMethod() {

        if (mCallback != null) {

            mCallback.doMethod();

        }

    }

    public void setOnMethodCallback(OnMethodCallback callback) {

        mCallback = callback;

    }

    public static interface OnMethodCallback {

        public void doMethod();

    }

}

 

如果你要 B 去調用 A 的一個方法, 你可以讓 A 實現 OnMethodCallback 介面,然後在 B 裡面調用 invokeMethod 方法來完成回調:

 

// A 實現調用介面

public class AActivity extends Activity implements ActivityCallBridge.OnMethodCallback {

    private ActivityCallBridge mBridge;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mBridge = ActivityCallBridge.getInstance();

        mBridge.setOnMethodCallback(this);

    }

    @Override

    public void doMethod() {

    }

}

 

  

//B 調用介面

public class BActivity extends Activity {

    private ActivityCallBridge mBridge;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mBridge = ActivityCallBridge.getInstance();

        mBridge.invokeMethod();

    }

}

方式一結束

 ——————————————————————————————————————————————————————————————————————————————————————————

                               回調方式二:

 

 

複製內容到剪貼簿代碼: package pattern;

/**
*
* @author xuzhiwei
*/
public interface ICallBack {
    public void onSuccess(String content);
    public void onFailure(String errorMsg);
}

 

複製內容到剪貼簿代碼: package pattern;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author xuzhiwei
*/
public abstract class Request { 
    public void onSuccess(String resposeBody){}
    public void onFailure(String exceptionMsg){}
    
    public Request(){}
    
    public void execute(String path){
        try {
            URL url = new URL(path);
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            
            conn.setConnectTimeout(3*1000);
            conn.setReadTimeout(2000);
            int responseCode =  conn.getResponseCode();
            onResponse(responseCode);
        } catch (MalformedURLException ex) {
            onFailure(ex.getMessage()); 
        } catch (IOException ex) {
           onFailure(ex.getMessage()); 
        } 
    }
    
    public void onResponse(int code){ 
        if(code == 200){
            onSuccess("發送請求成功!");
        }else{
            onFailure("發送請求失敗!請求代碼:"+code);
        }
    }
     
}

 

複製內容到剪貼簿代碼: package pattern;

/**
*
* @author xuzhiwei
*/
public class Ranking {
    private  String path;
    
    public Ranking(String path){
        this.path = path;
    } 
    
    public  void list(final ICallBack call) { 
        
        Request request = new Request() {
            @Override
            public void onSuccess(String resposeBody) {
                if (null != call) {
                    call.onSuccess(resposeBody);
                } else {
                    onFailure("未初始化回呼函數");
                }
            }

            @Override
            public void onFailure(String exceptionMsg) {
                if (null != call) {
                    call.onFailure(exceptionMsg);
                }
            }
        };

        request.execute(path);
    }
}

 

複製內容到剪貼簿代碼: package pattern; 
/**
*
* @author xuzhiwei
*/
public class TestCallBack {

    public static void main(String[] args) {
        
        Ranking ranking = new Ranking("http://localhost/net/index.php");
        
        ranking.list(new ICallBack() {

            @Override
            public void onSuccess(String content) {
               complete(content);
            }

            @Override
            public void onFailure(String errorMsg) {
                complete(errorMsg);
            }
        });
    }
    
    private static void complete(String msg)
    {
        System.out.println("------請求完成---->"+msg);
    }
}

 

android 回呼函數的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.