2017-02-13 19 views
1

Ich habe eine neue Aktivität von sich selbst gestartet, indem Sie Startaktivität aufrufen. Aber nachdem die Aktivität gestartet wurde, wird in der Methode onNewIntent die finish() nicht abgerufen !!.onNewIntent wird nicht aufgerufen

WebActivity.java

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    setIntent(intent); 
    if (intent.getStringExtra("url") != null) { 
     Intent intent1 = new Intent(getBaseContext(), WebActivity.class); 
     intent1.putExtra("url",intent.getStringExtra("url")); 
     startActivity(intent1); 
     finish(); 
    } 
} 
+1

entfernen Sie einfach setIntent (Absicht); weil es die aktuelle Aktivitätsabsicht speichert, sodass Sie zu derselben Aktivität zurückkehren. Überprüfen Sie [diesen Link] (http://stackoverflow.com/questions/7748392/is-there-any-reason-not-to-call-setintent-with-overriding-onnewintent) für weitere Informationen. –

Antwort

1

Es ist wegen der onNewIntent wird nicht aufgerufen !!!

Ich legte dies auf, wo diese Aktivität aufgerufen wird.

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

dann funktioniert es wie ein Charme !!.

Es ist wegen des Aufrufs neuer Aktivität. Und FLAG_ACTIVITY_SINGLE_TOP macht onNewIntent rufen Sie an. Dieser FLAG_ACTIVITY_SINGLE_TOPstartet keine neue Aktivität.

+0

froh zu hören. hast du es mit 'FLAG_ACTIVITY_NO_HISTORY' versucht? –

1

FYI

Debug auf dem ersten und entfernen unter unerwünschter Linie

super.onNewIntent(intent); 
setIntent(intent); 

Anruf finish() innerhalb Intent

Intent intent1 = new Intent(getBaseContext(), WebActivity.class); 
intent1.putExtra("url",intent.getStringExtra("url")); 
finish(); 
startActivity(intent1) 

können Sie auch mit FLAG_ACTIVITY_NO_HISTORY versuchen.

Wenn festgelegt, wird die neue Aktivität nicht im Verlaufsstapel gespeichert. Sobald der Benutzer davon weg navigiert, ist die Aktivität beendet. Dies kann auch mit dem noHistory-Attribut festgelegt werden.

+1

@CoDfather Verweisen Sie auf die offiziellen Dokumente, um den Aktivitätslebenszyklus zu verstehen: https://developer.android.com/reference/android/app/Activity.html – Akshay

+1

Wenn das 'finish()' zuerst aufgerufen wird, wie es zum '' geht startActivity (intention1) '?? –

+0

das ist, warum ich vorschlagen 'FLAG_ACTIVITY_NO_HISTORY' –

0

Ich verwendete onNewIntent für die Suche in Android-Implementierung. Ich stieß auf das Problem, dass onNewIntent wurde nicht aufgerufen, wenn ich die Go-Taste auf der Tastatur im Emulator verwendet. Ich löste das Problem, indem ich meinen Code für die Behandlung der Absicht in der Methode onCreate auch setzte. Dies muss getan werden, um sicherzustellen, dass die Absichtsaktion gehandhabt wird, wenn eine neue Instanz der Aktivität gestartet wird.

Dies führte zu einem Problem, da onCreate immer dann aufgerufen wird, wenn die Aktivität aus einem vorherigen Zustand wiederhergestellt wird. Daher wird die Intent-Behandlungsmethode aufgerufen, selbst wenn eine Orientierungsänderung auftritt.

Lösung: Verwenden Sie if (savedInstanceState==null), um festzustellen, ob die Aktivität aus einem vorherigen Status wiederhergestellt wird, oder handelt es sich um eine neue Suche.

Verwandte Themen