2017-09-20 9 views
0

私はRxAndroidBleを使用して、バックボタンを押すなどのイベントが発生したときに何度も問題に遭遇しています。バックボタンの実行を一時停止する最良の方法は何か不思議でした。私は基本的に、特定のブルートゥース操作が完了するまでロックを作成したいと思っています。操作が完了したら、「戻る」ボタンの実行を終了します。誰にでもアイデアはありますか?サブスクリプションが完了するまで戻るボタンの実行を一時停止する方法はありますか?

答えて

2

戻るボタンを無効にしてフラグを使用するだけですか?例えば。

private boolean delayedBack = false; // as member field 

...other Activity code 

@Override 
public void onBackPressed(){ 
    if(someCondition) 
     super.onBackPressed(); 
    else 
     delayedBack = true; 
} 

その後、いくつかの非同期操作だけでそのフラグをチェック終了:もちろん

if(delayedBack){ 
    super.onBackPressed(); 
    delayedBack = false; // in case you don't want to finish the Activity 
    } 

を代わりに、ほとんどの場合、あなたはあなたが実行したい他のアクションを実行することができActivityを終了しますsuper.onBackPressed();を使用しますユーザは戻るボタンを押す。

+0

は 'onBackPressed'をオーバーライドするのは本当に危険です。何らかの理由でフラグがリセットされない場合は、アプリのナビゲーションを無期限にブロックすることができます。これは実行可能な解決策ですが、 "バグ"を解消するために多くの努力が必要です – MatPag

+0

@MatPagそのため、すべてのユースケースを徹底的にテストするのは開発者の責任です。 – Droidman

+0

エラーのためにRxAndroidBleライブラリから取得します。 –

関連する問題