在 HTTP 调用 OptimusHTTP 上加载对话框

Loading Dialog on HTTP call OptimusHTTP

我在我的 android 项目中使用 OptimusHTTP 库。如果我的应用程序正在联系服务器,我会尝试显示加载。我的问题是为什么我的进度对话框没有关闭。这是我的代码。

public void connectREST()
{
    //using data json dummy
    String SERVER = "http://jsonplaceholder.typicode.com/posts/1";
    OptimusHTTP client = new OptimusHTTP();
    client.enableDebugging();
    client.setMethod(OptimusHTTP.METHOD_GET);


    //parameter
    ArrayMap<String, String> params = new ArrayMap<>();
    params.put("email", "abc@abc.com");
    params.put("pass", "abc");



    //make request
    ArrayList<HttpReq> refHttpReqList = new ArrayList<>();
    try {
        //mprogressdialog.show(this, "", "Loading", true);
        // makeRequest() returns the reference of the request made
        // which can be used later to call the cancelReq() if required
        // if no request is made the makeRequest() returns null
        HttpReq req = client.makeRequest(MainActivity.this, SERVER, params, responseListener);
        if (req != null)
            refHttpReqList.add(req);

       mprogressdialog.show(this, "Loading", "Wait while loading...");
        if (mprogressdialog != null && mprogressdialog.isShowing()) {
            mprogressdialog.dismiss();
        }



    } catch (Exception e) {
        e.printStackTrace();
    }

}

private final OptimusHTTP.ResponseListener responseListener = new OptimusHTTP.ResponseListener() {
    @Override
    public  void onSuccess(String msg) {
        System.out.println(msg);
        //mprogressdialog.dismiss();
        Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();

    }



    @Override
    public void onFailure(String msg) {
        System.out.println(msg);
    }
};

我知道这个库 (OptimusHTTP) 在联系服务器时使用 asnyc。 是否有任何配置,无论我在 http 连接上使用同步还是异步? 如果我在某些异步代码(双异步)中包含 get 方法怎么办?

我知道我的问题看起来像是一些新手问题。但要成为专业人士需要学习过程 :) 谢谢。

你看到这个库 (OptimusHTTP) 在联系时正在使用 asnyc server.But 你为什么要在同一个线程上更新 UI?

private final OptimusHTTP.ResponseListener responseListener = new OptimusHTTP.ResponseListener() {
    @Override
    public  void onSuccess(String msg) {
        System.out.println(msg);
        //mprogressdialog.dismiss();
        Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();

     }



   @Override
   public void onFailure(String msg) {
    System.out.println(msg);
   }
};

@navotera:您可以在发出请求之前和请求完成时显示进度对话框,在侦听器下关闭进度对话框。

...

@Override 
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
...
// Initialize the progressdialog
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Connecting");
...
...
// Show the progressdialog just before making a request  
progressDialog.show();
// Make the request
req = client.makeRequest(MainActivity.this, SERVER_URL, params,new OptimusHTTP.ResponseListener(){
    @Override public void onSuccess(String msg) {
        System.out.println(msg);
            // Dismiss the progressdialog
        progressDialog.dismiss();
      }

      @Override public void onFailure(String msg) {
        System.out.println(msg);
            // Dismiss the progressdialog
        progressDialog.dismiss();
      }
    });