如何在外面使用AsyncTask方法

时间:2017-01-22 04:03:28

标签: java android android-asynctask

我正在使用AsyncTask类检查服务器是否可用,并且使用以下代码正常工作

 class AsyncServerOnlineCheck extends AsyncTask {
    boolean isReachable;

    @Override
    protected Object doInBackground(Object[] objects) {

        isReachable = NetworkCheck.isReachable(SplashsActivity.this);
        return null;
    }

    @Override
    protected void onPostExecute(Object o) {
        super.onPostExecute(o);
        if (isReachable) {
            new DownloadLatestData().execute();
            Toast.makeText(SplashsActivity.this, "Server is online", Toast.LENGTH_SHORT).show();
        } else {
            if (database.isDataBaseCreated()) {
                Toast.makeText(SplashsActivity.this, "Server is offline", Toast.LENGTH_SHORT).show();
                Intent i = new Intent(SplashsActivity.this, MainActivity.class);
                startActivity(i);
                overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
                finish();
            } else {
                connectionerror();
            }
        }
    }
}

现在我想在其他名为connectionerror的方法中使用isReachable条件。两者都处于相同的活动中。 connectionerror如下所示

public void connectionerror() {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(SplashsActivity.this);

    alertDialog.setTitle("Error!");

    alertDialog.setMessage("Connection Lost ! Try Again");

    alertDialog.setPositiveButton("Retry",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    if (downloadLatestDataStatus != null) {
                        downloadLatestDataStatus.clear();
                    }
                    if (NetworkCheck.isInternetAvailable(SplashsActivity.this)) {
                        new DownloadLatestData().execute();
                    } else {
                        connectionerror();
                    }
                }
            });

    alertDialog.show();
}

您可以在connectionerror方法中看到一个条件,如下所示

if (NetworkCheck.isInternetAvailable(SplashsActivity.this)) {
                        new DownloadLatestData().execute();
                    }

这个条件用于网络检查,我想从AsyncTask使用isReachable ....我该怎么做?

1 个答案:

答案 0 :(得分:0)

我通过聘请自由职业者解决了这个问题。他在警报对话中做了如下所示

canceler.resolve(); 

谢谢所有朋友!!

相关问题