verwenden Ich möchte keine Argumente an doInBackground
Methode der AsyncTask übergeben.Wie AsyncTask korrekt in Android
Also wie sollte der Code sein?
verwenden Ich möchte keine Argumente an doInBackground
Methode der AsyncTask übergeben.Wie AsyncTask korrekt in Android
Also wie sollte der Code sein?
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
public class AsyncExample extends Activity{
private String url="http://www.google.co.in";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
new AsyncCaller().execute();
}
private class AsyncCaller extends AsyncTask<Void, Void, Void>
{
ProgressDialog pdLoading = new ProgressDialog(AsyncExample.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
//this method will be running on UI thread
pdLoading.setMessage("\tLoading...");
pdLoading.show();
}
@Override
protected Void doInBackground(Void... params) {
//this method will be running on background thread so don't update UI frome here
//do your long running http tasks here,you dont want to pass argument and u can access the parent class' variable url over here
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
//this method will be running on UI thread
pdLoading.dismiss();
}
}
}
Danke! Das sieht aus wie ich wollte ...: D – omerjerk
Ich bin froh zu helfen :-) –
Der WAHLE Unterschied zwischen Mehul Ranpara und Mehul Joisar hier ist der Joisar will Hilfe, ohne Fragen zu stellen, aber Ranpara will alle anderen ärgern, die aussehen bei diesem Post ....Deshalb grüße ich Mehul Joisar dafür, freundlich mit der Antwort auf die Frage unabhängig vom Staat zu sein ... – Vincy
Warum wollen Sie keine Argumente weitergeben? Sie sollten erklären ...
Dies ist, wie es funktioniert in der Regel (Beispiel):
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i/(float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
Und es Sie Anruf ausführen:
new DownloadFilesTask().execute(url1, url2, url3);
Quelle: Android docs
Oft Parameter an AsyncTask übergeben werden, aber nicht notwendig – codeMagic
gibt es keine Notwendigkeit für mich, ein Argument zu übergeben "doInBakground". Diese Methode öffnet nur eine PHP-Datei auf meinem Webserver per POST-Methode. Und ich brauche nur eine Antwort von dieser PHP-Datei zu bekommen. Also muss ich keine Argumente an 'doInBackground' übergeben. – omerjerk
Einfach - Sie verwenden nur die 'Void' Klasse. Sie hätten also 'private class DownloadFilesTask erweitert AsyncTask
Erstellen Sie Ihre AsyncTask
Klasse, als ob Sie keinen Parameter an doInBackground
übergeben möchten:
public class LongOperation extends AsyncTask<Void, Void, String> {
public LongOperation(Context context) {
}
@Override
protected void onPreExecute() {
}
@Override
protected String doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(String result) {
}
}
und starten AsyncTask als ohne Parameter vorbei auszuführen:
LongOperation longOperation = new LongOperation(this);
longOperation.execute();
Mir ist aufgefallen, dass die Android Studio-Autocomplete nicht die Fehlermeldung "
Nach AsyncTask, seine
AsyncTask<Params, Progress, Result>
Also, wenn Sie Lücke in doInBackground passieren wollen nur Leere anstelle von Params übergeben.
Beispielcode:
class DownloadLink extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
//Do Your stuff here..
return null;
}
}
Und nennen Sie es wie:
new DownloadLink().execute();
Es bedeutet, dass params das Array von Aufgaben ist und der Rückgabetyp für alle Aufgaben leer ist – blackHawk
@blackHawk - Yes –
was Sie versucht haben? –
versuchen Sie etwas, bevor Sie etwas veröffentlichen ... lesen Sie Blogs und Entwickler Guide – NullPointerException