zoukankan      html  css  js  c++  java
  • android 回调函数的使用

    // 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);
        }
    }
  • 相关阅读:
    Object之克隆对象clone 和__clone()函数
    Object之魔术函数__toString() 直接输出对象引用时自动调用
    Object之魔术函数__call() 处理错误调用
    Git关联远程GitHub仓库
    python制作查找单词翻译的脚本
    用python处理文本,本地文件系统以及使用数据库的知识基础
    基于序列化技术(Protobuf)的socket文件传输
    Python核心编程——Chapter16
    gdb初步窥探
    unp学习笔记——Chapter1
  • 原文地址:https://www.cnblogs.com/laughingQing/p/4554046.html
Copyright © 2011-2022 走看看