2017-12-08 2 views
0

Ich habe ein Problem mit der Reaktion native BackHandler Android, ich versuche, meine App zu schließen, wenn Sie auf dem "Home" -Bildschirm drücken.BackHandler.exitApp App bleibt minimiert im Lebenslauf zeigt alte Seite

onBackPress() { 
     BackHandler.exitApp(); 
     return false; 

    } 

    constructor(props) { 
     super(); 
     this._onBackPress = this.onBackPress.bind(this); 
    } 

Szene Setup:

const Scenes = Actions.create(
    <Scene key="root"> 
    <Scene key="setup" component={SetupContainer} title="setup" hideNavBar></Scene> 
    <Scene key="home" component={HomeContainer} title="home" hideNavBar></Scene> 
    </Scene> 
); 

jedoch die App einfach zu minimieren und , wenn der Benutzer wieder die App auswählt, wird die vorherige Seite (Setup) zeigen, die nur gemeint sein, Einmal aufgerufen.

ist sowieso da um ich möchte die App tatsächlich zerstören, damit sie nicht wieder aufgenommen werden kann.

+0

Ja, es ist ein Fehler in der 'reactive-native-router-flux' Bibliothek. Wie Sie hier sehen werden (https://github.com/aksonov/react-native-router-flux/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+back), viele Menschen haben Probleme mit dem Zurück-Button Verhalten beim Beenden einer App (was im nativen Android ein Kinderspiel war). Ich habe in den letzten zwei Tagen Hacks für das gleiche Problem versucht, aber ohne Erfolg. Ich habe auch ein natives Modul erstellt, um "Activity.finish()" aufzurufen, wenn die Zurück-Taste gedrückt wird, aber selbst dann wird die App vom selben Bildschirm fortgesetzt, anstatt mit dem Begrüßungsbildschirm neu zu starten. –

Antwort

1

Ich bin gerade in diese Lösung gelaufen. Um die App zu beenden, habe ich ein Native-Modul verwendet, das die App im Grunde "tötet", so dass sie wie eine iOS-App neu gestartet werden kann, anstatt vom vorherigen Bildschirm fortzufahren.

In meinem nativen Code, ich rufe -

 @ReactMethod 
    public void finishAndroidActivity(int x) { 
    Log.d("MainActivity","finishAndroidActivity"); 
    Activity activity = getCurrentActivity(); 
    //Toast.makeText(getReactApplicationContext(), "Exit", Toast.LENGTH_SHORT).show(); 

    if (activity != null) { 
     Log.d("Received Value =", String.valueOf(x)); 
     if(x==1) 
     { 
      android.os.Process.killProcess(android.os.Process.myPid()); 
     } 
     else 
      activity.onBackPressed(); 
    } 
    } 

den Prozess zu beenden.

Von meinem Javascript-Code, ich bin einen Integer-Wert vorbei je nachdem, welchen Bildschirm ich von jeder Zeit verlassen wollen zurück-Taste (in der Reduktionsfunktion) gedrückt wird -

const reducerCreate = params => { 
    const defaultReducer = new Reducer(params); 
    return (state, action) => { 
     if (action.type === 'Navigation/BACK') { 
      if (Actions.currentScene === 'Dashboard') { 
       MyModuleExitApp.finishAndroidActivity(1); 
      } 
     } 
     return defaultReducer(state, action); 
    }; 

}; 

Dies als adaequat Die App wird jetzt vom Begrüßungsbildschirm gelöscht und neu gestartet.

Verwandte Themen