В настоящее время я работаю в приложении Android, поскольку у меня есть 10 отдельных классов Asynctask для 10 отдельных операций, в том, что пользовательская функция, называемая внутри onPreExecute() и onProgressUpdate() будет одинаковым для всех 10 классов Asynctask. Есть ли другой способ упростить это. Например, у меня есть пользовательская функция с именем «ADD», и на данный момент я вызвал функцию «ADD» в onPreExecute() для всех 10 классов Asynctask, есть ли другой способ упростить это, используя интерфейс или any-other else,Сделать onPreExecute и onProgressUpdate общедоступным для всех классов Asynctask
ответ
Создайте один класс BaseAsyncTask, который расширяет AsyncTask. И напишите реализацию ваших и onPreExecute(), и onProgressUpdate() int this.
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.
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);
}}
Создайте базовую задачу async с операциями в onPreExecute() и onProgressExecute(). Затем создайте свои классы задач async (простирайтесь от основной задачи async).
, конечно, вы можете создать отдельный класс для всех 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();
}
}
}
и объявить интерфейс, как этот
public interface MyAsyncInterface {
void processFinish(String output);
}
затем создать Uri в вашем активности и реализовать MyAsyncInterface, а затем внутри процесса вызова onPostExecuteFinish и передать результат процессу processFinish (String output), присутствующему в вашей активности вызова ty
Спасибо за ваш повтор ... его работы как шарм .. .. –
- 1. AsyncTask и onPreExecute
- 2. AsyncTask не отображается onPreExecute
- 3. Диалог в AsyncTask onPreExecute()
- 4. AsyncTask onPreExecute новый progressdialog
- 5. Любой пример использования 2 разных классов для onProgressUpdate в Asynctask?
- 6. AsyncTask передать массив onProgressUpdate()
- 7. AsyncTask onProgressUpdate называется неоднократно
- 8. AsyncTask onProgressUpdate (Double ... стоимость)
- 9. Как сделать список классов общедоступным?
- 10. onProgressUpdate() не работает в AsyncTask
- 11. Как сделать onPreExecute()?
- 12. progressbar в asynctask не попадает в onProgressUpdate
- 13. Использование AsyncTask onProgressUpdate для обновления пользовательского интерфейса
- 14. AsyncTask не вызывает onProgressUpdate, onPostExecute
- 15. Android, AsyncTask, onProgressUpdate и onPostExecute не вызываются
- 16. AsyncTask publishProgress DonT называет onProgressUpdate
- 17. AsyncTask не делает onProgressUpdate Android
- 18. AsyncTask: гарантирован ли onPostExecute после всех вызовов onProgressUpdate?
- 19. Android: Как передать параметры в onPreExecute() AsyncTask?
- 20. Прогресс Диалог в asyncTask OnPreExecute метод Android
- 21. onProgressUpdate исполнение
- 22. Индикатор выполнения не отображается в AsyncTask onPreExecute()
- 23. onPreExecute/onPostExecute моего AsyncTask не называется
- 24. return from onPreExecute AsyncTask без вызова супер
- 25. Android AsyncTask publishProgress не вызывает onProgressUpdate
- 26. Диалог прогресса не обновляется на AsyncTask onProgressUpdate
- 27. ArrayIndexOutOfBoundsException в onProgressUpdate из AsyncTask в Android
- 28. Android: CalledFromWrongThreadException в AsyncTask в функции onProgressUpdate
- 29. Как сделать ArrayList <ImageView> полученным из AsyncTask в onPreExecute()?
- 30. Как сделать объект общедоступным для всех функций в классе?
Хорошо, что ваш ответ намного лучше;) не мог сделать это лучше. – beeb
Спасибо за ваш повтор ... его работы как шарм .... –