ich AsyncTask verwende, so dass die Funktion Ich möchte sofort ausgeführt und wartet nicht, bis zum Ende ausgeführt werden ..AsyncTask führt am Ende der Funktion
aber aus irgendeinem Grund ich nicht, warum es führt am Ende aller Prozesse!
schaute ich auf anderen Lösungen und festgestellt, ist das Thema am Ende ausgeführt werden, aber für AsyncTask sollte ausgeführt werden, wenn es aufgerufen wird ..
hier mein Code
private void LogMeIn()
{
string CheckValue;
// Here I call the AsyncTask
new GCM().execute(null,null,null);
//gcmRegID is a public variable and should has GCM value assigned to it by now, but I it is empty as GCM() has not been executed yet
//This is always return empty string
CheckValue = gcmRegID;
}
Das ist das ist AsyncTask, die bis zum Ende warten, wird
ausgeführt//This is the AsyncTask
private class GCM extends AsyncTask<String, String, String> {
private String resp;
private Context context;
@Override
protected String doInBackground(String... params) {
GCMHelper gcmRegistrationHelper = new GCMHelper (
getApplicationContext());
try {
gcmRegID = gcmRegistrationHelper.GCMRegister("123456789");
} catch (Exception e) {
e.printStackTrace();
}
return gcmRegID;
}
}
ich habe versucht, den Ruf nach GCMRegister in OnPreExecute zu setzen, aber ich erhalte eine Fehlermeldung, dass es in der Haupt sein muss Gewinde
es ist, wie ich in Kreisen werde ....
der Anruf im Hauptthread zu sein hat und der Haupt-Thread wird am Ende der Funktion ausgeführt werden ...
Es ist wie keine Möglichkeit, den GCM-Code in die Mitte zu bekommen !!!!
Wie kann ich diese AsyncTask ausführen, wenn es aufgerufen wird?
Dank
Es wird sofort ausgeführt. Aber du tust nichts damit. Sollte sich die Dokumentation genauer ansehen. –
"gcmRegID ist eine öffentliche Variable und sollte ihm jetzt GCM-Wert zugewiesen haben" - Nein, sollte es nicht, weil Ihre Aufgabe asynchron ausgeführt wird, was bedeutet, dass sie nicht blockiert, und die Zeilen nach dem 'execute() 'rufe sofort weiter. –
Wo rufst du 'LogMeIn()'? Verwenden Sie Breakpoints. – petey