在 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();
}
});
我在我的 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();
}
});