2017-07-16 3 views
0

Ich versuche, einige API-Daten zu meiner App zu holen, und ich habe zwei Aktivitäten. Der erste ist ein Begrüßungsbildschirm (wie er von google verwendet wird, während Ihre App geladen wird) und ich möchte wissen, wo Sie finish() aufrufen können, um die Aktivität zu beenden.Anruf beenden() oder nicht?

public class SplashScreen extends AppCompatActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    AsyncDataFetch fetch = new AsyncDataFetch(); 
    fetch.setContext(this); 
    fetch.execute(); 

} 

}

Ich bin umgezogen alle meine Code in meinem AsyncTask, damit ich die UI-Thread nicht blockieren und jetzt kann ich nicht finish() es nennen, oder ich weiß nicht, wie.

Warum sollte ich für meine App beenden, anstatt es auf meine Aktivität zu nennen, die Sie vielleicht fragen ... Es ist, weil es eine Art von Glitch erzeugt, wenn ich dies tue, weil meine API-Abruf dauert etwa 1 Sekunde und zeigt und das Schließen dieser Aktivität dauert weniger.

Also, wo soll ich finish() nennen und wie?

Antwort

2

Sie sollten finish() in onPostExecute der Async-Aufgabe aufrufen, nachdem Sie das Ergebnis von doInBackground() erhalten haben.

+0

Hallo. Vielen Dank. In der Tat habe ich versucht, dies so zu nennen, wie du gesagt hast, aber es scheint, dass diese Methode finish() nicht aus der Aktivität heraus erkannt wird. Ich habe versucht, es aus dem Kontext (wie von der Methode setContext() übergeben) und mit SplashActivity.class.finish() zu nennen. Wie nenne ich das? Ich habe keine relevanten Antworten auf Google noch gefunden – bemihai22

+0

SplashActivity.this.finish() –

+0

Vielen Dank – bemihai22

0

Wenn Ihre Aktivität, die Sie beenden möchten, ein Splash srceen ist, sollten Sie finish() unter postExecute() setzen, was in Ihrer asyncsTask überschrieben werden sollte.

Verwandte Themen