432 Stimmen

Neustart der Aktivität in Android

Wie starte ich ein Android-Gerät neu? Activity ? Ich habe Folgendes versucht, aber die Activity einfach aufgibt.

public static void restartActivity(Activity act){

        Intent intent=new Intent();
        intent.setClass(act, act.getClass());
        act.startActivity(intent);
        act.finish();

}

27voto

code Punkte 2045

Dies ist bei weitem der einfachste Weg, die aktuelle Aktivität wieder aufzunehmen:

finish();
startActivity(getIntent());

25voto

shkschneider Punkte 17115

Ich frage mich, warum niemand die Intent.makeRestartActivityTask() die genau diesen Zweck erfüllt.

Erstellen Sie eine Absicht, die zum erneuten Starten einer Anwendungsaufgabe verwendet werden kann * in ihrem Grundzustand zu starten.

startActivity(Intent.makeRestartActivityTask(getActivity().getIntent().getComponent()));

Diese Methode setzt Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK als Standard-Flags.

24voto

user3748515 Punkte 251

Diese Lösung hat bei mir funktioniert.

Beenden Sie zunächst die Aktivität und beginnen Sie sie dann erneut.

Beispiel-Code:

public void restartActivity(){
    Intent mIntent = getIntent();
    finish();
    startActivity(mIntent);
}

21voto

Nikhil Dinesh Punkte 3221

Aufruf dieser Methode

private void restartFirstActivity()
 {
 Intent i = getApplicationContext().getPackageManager()
 .getLaunchIntentForPackage(getApplicationContext().getPackageName() );

 i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK );
 startActivity(i);
 }

Danke,

16voto

Chris.Jenkins Punkte 12883

Auch wenn diese Frage bereits mehrfach beantwortet wurde.

Wenn ich eine Aktivität von einem Fragment aus neu starte, würde ich das so machen:

new Handler().post(new Runnable() {

         @Override
         public void run()
         {
            Intent intent = getActivity().getIntent();
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
            getActivity().overridePendingTransition(0, 0);
            getActivity().finish();

            getActivity().overridePendingTransition(0, 0);
            startActivity(intent);
        }
    });

Sie denken jetzt vielleicht, dass das ein wenig übertrieben ist? Aber die Handler Buchung können Sie dies in einer Lebenszyklusmethode aufrufen. Ich habe dies verwendet in onRestart / onResume Methoden, um zu prüfen, ob sich der Zustand zwischen der Rückkehr des Benutzers zur App geändert hat. (etwas installiert).

Ohne die Handler Wenn Sie es an einer ungeraden Stelle aufrufen, wird die Aktivität einfach beendet und nicht neu gestartet.

Sie können uns gerne alle Fragen stellen.

Zum Wohl, Chris

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X