以不同的间隔多次重试代码段

时间:2018-11-01 08:45:58

标签: java android algorithm retry-logic

我想为我的android应用程序代码的一部分提供一种算法,如果它不满足不同时间间隔的条件,它将一次又一次地执行特定的代码段。简单来说,就是在不同的时间间隔后重试代码多次。

例如, 我正在上传一些字符串数据,当有互联网连接时我会进行网络连接检查,而当没有互联网时,它将在1分钟后自动再次检查。如果是肯定的,则上传数据,如果不是,则应在接下来的3分钟内重试;如果是肯定的,则应再次上传数据;如果不是,则应在接下来的5分钟内进行最后检查,如果不能,则进行最后一次检查。网络,那么它应该显示吐司没有网络。

如何使用简单的算法做到这一点?

此处以网络连接方案为例。我要有我在此说明的“重试”算法。

谢谢。

2 个答案:

答案 0 :(得分:1)

首先,您必须声明一种方法以检查是否存在Internet连接。

使用ConnectivityManagerNetworkInfo

public static boolean hasInternetConnection(final Context context) {
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ni = cm.getActiveNetworkInfo();
    if (ni == null) {
        return false;
    } else
        return true;
}

然后...

try{
        if(Util.hasInternetConnection(mcontext)){
            //todo

                @Override
                public void onSuccess(String message) {
                   showAlertDialog("Alert",message);
                }

                @Override
                public void onFail(String errorcode, String errormessage) {
                    showAlertDialog("Alert",errormessage);
                }
            });
        }else{
            showInternetRequiredDialog(getString(R.string.title_internet_require), getString(R.string.msg_no_internet_connection_setup));
            return;
        }
    }catch (Exception ex){
        ex.printStackTrace();
}

关于您要如何编写检查逻辑,我会留给您

答案 1 :(得分:0)

使用处理程序,计时器可以提供帮助。