Derzeit arbeite ich in Android-Anwendung, in dem ich 10 separate Asynctask-Klasse für 10 separate Operation, in dem die benutzerdefinierte Funktion namens onPreExecute() und onProgressUpdate() wird für alle 10 Asynctask-Klassen gleich sein. Gibt es einen anderen Weg, dies zu vereinfachen? Zum Beispiel habe ich eine benutzerdefinierte Funktion namens "ADD", und ab sofort habe ich die "ADD" -Funktion in onPreExecute() aller 10 Asynctask-Klasse aufgerufen, gibt es eine andere Möglichkeit, dies zu vereinfachen, indem Sie die Schnittstelle oder verwenden any-other sonst,Machen Sie onPreExecute und onProgressUpdate für alle Asynctask-Klasse gemeinsam
Antwort
Erstellen Sie eine Klasse, die BaseAsyncTask ist, die AsyncTask erweitert. Und schreiben Sie die Implementierung Ihrer beiden onPreExecute() und onProgressUpdate() int dies.
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);
}
}
Und erweitern, dass BaseAsyncTask in Ihrem All 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);
}}
Erstellen eine einfache Asynchron-Aufgabe mit den Operationen in OnPreExecute() und onProgressExecute(). Erstellen Sie anschließend Ihre asynchronen Taskklassen (ausgehend von der grundlegenden asynchronen Task).
sicher, können Sie eine einzelne Klasse schaffen für alle AsyncTask ruft
erstellen Sie einfach eine Klasse
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();
}
}
}
und erklären eine Schnittstelle wie diese
public interface MyAsyncInterface {
void processFinish(String output);
}
dann eine Uri erstellen in Ihrem aktiviere und implementiere MyAsyncInterface dann innerhalb des onPostExecute call processFinish und gib die Ausgabe an die processFinish (String output) -Methode weiter, die in deiner aufrufenden Aktivität vorhanden ist ty
Danke für Ihre Wiederholung ... es funktioniert wie ein Charme .. .. –
- 1. Wie aktualisiert man alle Fragmente? onProgressUpdate Aktualisiert nicht alle Fragmente
- 2. bekomme alle Zeilen gemeinsam
- 3. AsyncTask OnPreExecute neue progressdialog
- 4. onProgressUpdate nicht aufgerufen
- 5. Gemeinsam genutzte Bibliothek für MonoDroid und MonoTouch
- 6. asyncTask onProgressUpdate funktioniert nicht beim zweiten Aufruf
- 7. erhalten alle Zeilen gemeinsam Eltern mit
- 8. Machen Sie ein Python-Modul für alle zugänglich
- 9. Warum machen Softmax und Crossentropy separat unterschiedliche Ergebnisse, als wenn sie gemeinsam mit softmax_cross_entropy_with_logits arbeiten?
- 10. Machen Sie Apache Wicket laden jquery für alle Seiten
- 11. Machen Sie alle DataGridview Spalten sortierbar
- 12. Wie machen Sie alle Edelsteinklassen und Module privat?
- 13. Gemeinsam beobachtbar und startWith Operator
- 14. Alle Variablen global machen
- 15. Verwenden Sie gemeinsam neo4j OGM und den Neo4j Java-Treiber
- 16. Seite Cache für gemeinsam genutzten Speicher
- 17. Machen Sie alle Felder erforderlich in Mongoose
- 18. Machen Sie EditText Hinweis alle Großbuchstaben
- 19. Android Retrofit - onProgressUpdate zum Anzeigen der Fortschrittsbenachrichtigung
- 20. Android onProgressUpdate kann nur statische Methode aufrufen?
- 21. Android/Java: onProgressUpdate() wird nicht aufgerufen?
- 22. Machen Sie TeamCity ziehen Sie alle git Zweige herunter
- 23. ProgressDialog erscheint nicht im Verfahren onProgressUpdate
- 24. Wie würden Sie in Rails 4 alle für einen Benutzer spezifischen Datenbankänderungen protokollieren und rückgängig machen?
- 25. Machen Sie einfach HTTP-Anfrage und erhalten Sie den Inhalt
- 26. ArrayIndexOutOfBoundsException in onProgressUpdate von AsyncTask in Android
- 27. Machen Sie Frequenzhistogramm für Faktorvariablen
- 28. Vergleichen Sie zwei große Wörterbücher und erstellen Listen von Werten für Schlüssel, die sie gemeinsam
- 29. CSS - Machen Sie den Seiteninhalt füllen Sie alle Bildschirmhöhe
- 30. Suche git Zweige für Datei gemeinsam
Nun Ihre Antwort ist viel besser;) könnte es nicht besser – beeb
Danke für Ihre Wiederholung ... es funktioniert wie ein Charme .... –