2017-12-08 19 views
0

反応ネイティブのBackHandlerアンドロイドで問題が発生しました。「ホーム」画面を押したときにアプリケーションを終了しようとしています。BackHandler.exitAppアプリは古いページの表示を再開すると最小化されます

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

    } 

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

シーンのセットアップ:ユーザーが再びアプリを選択したときに

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> 
); 

しかし、アプリは、単に最小化、およびされ、それが唯一であることを意味する前のページ(セットアップ)が表示されます一度アクセス。

私は実際にこのアプリケーションを破棄して再開できないようにしたいと考えています。

+0

はい、 'react-native-router-flux'ライブラリのバグです。 [ここ](https://github.com/aksonov/react-native-router-flux/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+back)に表示されるように、多くの人々はアプリを終了するバックボタンの動作(ネイティブのアンドロイドの風であった)に関する問題を抱えています。私は過去2日間同じ問題でハッキングを試みてきたが、成功しなかった。また、戻るボタンを押したときに "Activity.finish()"を呼び出すネイティブモジュールを作成しましたが、スプラッシュ画面で再起動するのではなく、同じ画面から再開します。 –

答えて

1

私はこのソリューションを使いました。 アプリを終了するには、元の画面から再開するのではなく、iOSアプリのように再起動できるようにアプリを基本的に「強制終了」するネイティブモジュールを使用しました。私のネイティブコードで

、私は呼び出しています -

 @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(); 
    } 
    } 

は、プロセスを終了します。私のJavascriptコードから

は、私は(減速機能に)戻るボタンが押されるたびに終了したい画面に応じて、整数値を渡している - これは、と正常に動作している

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); 
    }; 

}; 

今すぐアプリが殺され、スプラッシュスクリーンから再開されます。

関連する問題