Java 使所有Asynctask类的onPreExecute和onProgressUpdate公用
目前,我在android应用程序中工作,因为我有10个单独的Asynctask类用于10个单独的操作,在onPreExecute()和onProgressUpdate()中调用的用户定义函数对于所有10个Asynctask类都是相同的。有没有其他方法可以简化这一点。例如,我有一个名为“ADD”的用户定义函数,到目前为止,我已经在所有10个Asynctask类的onPreExecute()中调用了“ADD”函数,是否有其他方法来简化此过程,通过使用interface或任何其他方法,创建一个扩展Asynctask的BaseAyncTask类。 并在此基础上编写onPreExecute()和onProgressUpdate()的实现Java 使所有Asynctask类的onPreExecute和onProgressUpdate公用,java,android,android-asynctask,Java,Android,Android Asynctask,目前,我在android应用程序中工作,因为我有10个单独的Asynctask类用于10个单独的操作,在onPreExecute()和onProgressUpdate()中调用的用户定义函数对于所有10个Asynctask类都是相同的。有没有其他方法可以简化这一点。例如,我有一个名为“ADD”的用户定义函数,到目前为止,我已经在所有10个Asynctask类的onPreExecute()中调用了“ADD”函数,是否有其他方法来简化此过程,通过使用interface或任何其他方法,创建一个扩展As
public abstract class BaseAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
@android.support.annotation.Nullable
private ProgressDialog progressDialog = null;
public Activity activity;
public BaseAsyncTask(Activity activity) {
this.activity = activity;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(activity, R.style.CustomProgressSpinner);
CommonUtilities.showDialog(progressDialog,activity);
}
@Override
protected void onProgressUpdate(Progress... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Result result) {
super.onPostExecute(result);
CommonUtilities.dismissDialog(progressDialog);
}
}
公共抽象类BaseAsyncTask扩展了AsyncTask{
@android.support.annotation.Nullable
private ProgressDialog ProgressDialog=null;
公共活动;
公共BaseAsyncTask(活动){
这个。活动=活动;
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
progressDialog=新建progressDialog(活动,R.style.CustomProgressSpinner);
CommonUtilities.showDialog(progressDialog,activity);
}
@凌驾
受保护的void onProgressUpdate(进度…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(结果){
super.onPostExecute(结果);
CommonUtilities.dismissDialog(progressDialog);
}
}
在所有AsyncTask中扩展BaseAyncTask
public class AttachmentLoadTask extends BaseAsyncTask<DocumentVO, Void, File> {@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected File doInBackground(DocumentVO... documentVOs) {
File file = null;
return file;
}
@Override
protected void onProgressUpdate(Progress... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(File file) {
super.onPostExecute(file);
}}
公共类AttachmentLoadTask扩展BaseAncyncTask{@Override
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的文件doInBackground(DocumentVO…documentVOs){
File=null;
返回文件;
}
@凌驾
受保护的void onProgressUpdate(进度…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(文件){
super.onPostExecute(文件);
}}
创建一个扩展AsyncTask的BaseAyncTask类。
并在此基础上编写onPreExecute()和onProgressUpdate()的实现
public abstract class BaseAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
@android.support.annotation.Nullable
private ProgressDialog progressDialog = null;
public Activity activity;
public BaseAsyncTask(Activity activity) {
this.activity = activity;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(activity, R.style.CustomProgressSpinner);
CommonUtilities.showDialog(progressDialog,activity);
}
@Override
protected void onProgressUpdate(Progress... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Result result) {
super.onPostExecute(result);
CommonUtilities.dismissDialog(progressDialog);
}
}
公共抽象类BaseAsyncTask扩展了AsyncTask{
@android.support.annotation.Nullable
private ProgressDialog ProgressDialog=null;
公共活动;
公共BaseAsyncTask(活动){
这个。活动=活动;
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
progressDialog=新建progressDialog(活动,R.style.CustomProgressSpinner);
CommonUtilities.showDialog(progressDialog,activity);
}
@凌驾
受保护的void onProgressUpdate(进度…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(结果){
super.onPostExecute(结果);
CommonUtilities.dismissDialog(progressDialog);
}
}
在所有AsyncTask中扩展BaseAyncTask
public class AttachmentLoadTask extends BaseAsyncTask<DocumentVO, Void, File> {@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected File doInBackground(DocumentVO... documentVOs) {
File file = null;
return file;
}
@Override
protected void onProgressUpdate(Progress... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(File file) {
super.onPostExecute(file);
}}
公共类AttachmentLoadTask扩展BaseAncyncTask{@Override
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的文件doInBackground(DocumentVO…documentVOs){
File=null;
返回文件;
}
@凌驾
受保护的void onProgressUpdate(进度…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(文件){
super.onPostExecute(文件);
}}
使用onPreExecute()和onProgressExecute()中的操作创建一个基本异步任务。然后创建异步任务类(从基本异步任务扩展)。使用onPreExecute()和onProgressExecute()中的操作创建基本异步任务。然后创建异步任务类(从基本异步任务扩展而来)。当然,您可以为所有异步任务调用创建一个类
只需创建一个类
public class MyConnectionClass extends AsyncTask<Uri, Void, Boolean> {
MyAsyncInterface delegate = null;
HttpURLConnection httpURLConnection;
String output;
public MyConnectionClass(MyAsyncInterface myAsyncInterface) {
delegate = myAsyncInterface;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Boolean aBoolean) {
delegate.processFinish(output);
super.onPostExecute(aBoolean);
}
@Override
protected Boolean doInBackground(Uri... uris) {
try {
URL url = new URL(uris[0].toString());
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.connect();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
String line = null;
StringBuilder builder = new StringBuilder();
while ((line = reader.readLine()) != null) {
builder.append(line);
}
output = builder.toString();
return true;
} catch (MalformedURLException e) {
output = e.getMessage();
return false;
} catch (IOException e) {
output = e.getMessage();
return false;
} finally {
httpURLConnection.disconnect();
}
}
}
然后在活动中创建一个Uri并实现MyAsyncInterface,然后在onPostExecute调用processFinish中实现,并将输出传递给调用活动中的processFinish(字符串输出)方法。当然,您可以为所有Asynctask调用创建一个类 只需创建一个类
public class MyConnectionClass extends AsyncTask<Uri, Void, Boolean> {
MyAsyncInterface delegate = null;
HttpURLConnection httpURLConnection;
String output;
public MyConnectionClass(MyAsyncInterface myAsyncInterface) {
delegate = myAsyncInterface;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Boolean aBoolean) {
delegate.processFinish(output);
super.onPostExecute(aBoolean);
}
@Override
protected Boolean doInBackground(Uri... uris) {
try {
URL url = new URL(uris[0].toString());
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.connect();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
String line = null;
StringBuilder builder = new StringBuilder();
while ((line = reader.readLine()) != null) {
builder.append(line);
}
output = builder.toString();
return true;
} catch (MalformedURLException e) {
output = e.getMessage();
return false;
} catch (IOException e) {
output = e.getMessage();
return false;
} finally {
httpURLConnection.disconnect();
}
}
}
然后在活动中创建Uri并实现MyAsyncInterface,然后在onPostExecute调用processFinish中实现,并将输出传递给调用活动中的processFinish(字符串输出)方法做得再好不过了你的答案好多了再好不过了