我有一些EditTexts,用户输入ftp地址,用户名,密码,端口和testConnection按钮.如果连接成功建立,则返回布尔值true.
boolean status = ftpConnect(_address, _username, _password,_port);
ftpDisconnect();
if (status == true) {
Toast.makeText(SiteManager.this, "Connection Succesful",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(SiteManager.this,
"Connection Failed:" + status, Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
我正在重新编写代码以使用AsyncTasks来执行各种ftp操作,但是如果成功建立连接,如何传回布尔值?
testConnection.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
_name = etSitename.getText().toString();
_address = etAddress.getText().toString();
_username = etUsername.getText().toString();
_password = etPassword.getText().toString();
_port = Integer.parseInt(etPort.getText().toString());
AsyncConnectTask task = new AsyncConnectTask(SiteManager.this,
_address, _username, _password, _port);
task.execute();
// boolean status = ftpConnect(_address, _username, _password,
// _port);
// ftpDisconnect();
// if (status == true) {
// …Run Code Online (Sandbox Code Playgroud) 可能重复:
AsyncTask阻止UI威胁并显示延迟的进度条
我想在从任何服务器检索JSON时显示progressDialog.所以我使用AsyncTask作为解决方案(不确定任何不同的出路).
一切都很好,ProgressDialog正常工作,直到我使用AsyncTask实例调用.get()方法.我想它会以某种方式阻止UI.这是我的AsyncTask:
public class myAsync extends AsyncTask<String, String, List> {
String message; // for dialog message
ProgressDialog progress;
Intent myIntent;
Context ctx;
public myAsync(String message, Context ctx) {
this.message = message;
this.ctx = ctx;
progress = new ProgressDialog(ctx);
}
@Override
protected void onPreExecute() {
progress.setMessage(message);
progress.setIndeterminate(true);
progress.setCancelable(false);
progress.show();
}
@Override
protected List doInBackground(String... params) {
//returns any list after the task
return anyList;
}
@Override
protected void onPostExecute(List result) {
if(progress.isShowing())
progress.dismiss();
}
}
Run Code Online (Sandbox Code Playgroud)
这里是调用AsyncTask的myActivity:
myAsync asyncTask = …Run Code Online (Sandbox Code Playgroud) [我有一个自定义的parcelable对象车]
我看过AsyncTask但是关于这个主题还不太清楚:
我想将一个String(它是Vehicle的Vehicle ID)传递给AsyncTask,然后在doInBackground()中我有一个方法
mRemoteInterface.getTrackHistory();
Run Code Online (Sandbox Code Playgroud)
这给了我一个ArrayList.我想在onPostExecute()中启动一个活动,其中Vehicle ID和ArrayList都是额外的.
这是我无法做到的概述.问题是我不明白将对象INTO到asynctask,然后从doInBackground()到onPostExecute()和从onPostExecute()返回到原始的执行调用.
getTrackHistory.execute(这里应该去哪里?);
private class getTrackHistory extends
AsyncTask<String, Integer, Boolean **WHAT SHOULD GO HERE?**> {
@Override
protected Boolean doInBackground(
String... params) {
try {
String vehicleID = params[0];
listVehicleHistory = (ArrayList<Vehicle>) mRemoteInterface.getVehicleHistory(vehicleID);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onProgressUpdate(Integer... progress) {
}
@Override
protected void onPostExecute(Boolean worked) {
super.onPostExecute(worked);
Intent intent = new Intent(MainActivity.this,VehicleInfo.class);
intent.putExtra("Vehicle ID", toReturn);
intent.putParcelableArrayListExtra("VehicleHistory", listVehicleHistory);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
}