【android应用】android应用回调函数实现---简单实例

一、简单调用

1、创建接口

package com.android.vps.upgrade;

public interface IUpgradeStateListener {
    // 回调方法
    void upgradeFailMsg(String errorInfo);
}

2、调用

//调用
UpdateUtils.getInstance(this, path).requestUpgrate(new IUpgradeStateListener() {
    @Override
    public void upgradeFailMsg(String errorInfo) {
        Log.d(TAG, "IUpgradeStateListener: is error:" + errorInfo);
    }
});

//具体实现
public void requestUpgrate(final IUpgradeStateListener resultCb) {
    if(resultCb == null){
        Log.e(TAG, "requestUpgrate: resultCb is null !");
    }else{
        mResultCb = resultCb;
    }
    new Thread(new Runnable(){
        @Override
        public void run() {
            try {
                getUpgradeInfo(mUpgradeUrl, UPGRADA_DOWN, resultCb);
            } catch (IOException e) {
                if(resultCb != null) resultCb.upgradeFailMsg(e.toString());
                e.printStackTrace();
            }
        }
    }).start();
}

二、接口和调用之间包一层class

1、接口与上面是一样的

2、中间class

package com.android.vps.upgrade.utils;

import android.content.Context;
import android.util.Log;

import com.android.vps.upgrade.IUpgradeStateListener;

public class UpgradeFailMsg {
    private static final String TAG = "UpgradeFailMsg";
    private IUpgradeStateListener mUpgradeStateListener = null;

    public UpgradeFailMsg(Context context) {
    }

    public void setOnChangeListener(IUpgradeStateListener upgradeStateListener) {
        this.mUpgradeStateListener = upgradeStateListener;
        //因为是模拟,所以需要在此将控件状态传出
    }

    /*
     * @升级结果回调函数
     * @return false 升级失败 true 升级成功
     * */
    public void upgradeFailMsg(String errorInfo){
        if(mUpgradeStateListener == null) {
            Log.e(TAG, "upgradeFailMsg: The callback function is empty!");
            return ;
        }
        Log.e(TAG, "upgradeFailMsg :  errorInfo ->" + errorInfo);
        mUpgradeStateListener.upgradeFailMsg(errorInfo);
    }
}

3、调用

//调用
private UpgradeFailMsg mUpgradeState = null;
mUpgradeState = new UpgradeFailMsg(this);
mUpgradeState.setOnChangeListener(new IUpgradeStateListener() {
    @Override
    public void upgradeFailMsg(String errorInfo) {
        Log.d(TAG, "upgradeFailMsg: is error:" + errorInfo);
    }
});
UpdateUtils.getInstance(this, path).requestUpgrate(mUpgradeState);

//具体实现
// 请求升级
public void requestUpgrate(UpgradeFailMsg resultCb) {
    if(resultCb == null){
        Log.e(TAG, "requestUpgrate: resultCb is null !");
    }else{
        mResultCb = resultCb;
    }
    new Thread(new Runnable(){
        @Override
        public void run() {
            try {
                getUpgradeInfo(mUpgradeUrl, UPGRADA_DOWN, resultCb);
            } catch (IOException e) {
                if(resultCb != null) resultCb.upgradeFailMsg(e.toString());
                e.printStackTrace();
            }
        }
    }).start();
}

三、优缺

简单调用,简单直接方便,但是不适合管理。

封一层class,之后可以直接再class中处理异常。

发布了61 篇原创文章 · 获赞 45 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/twk121109281/article/details/99644991