Androidの戻りキーと順次ポップアップ戻りスタック


本文は主にいくつかのこまごましたものを記録する.
プロジェクトでは常にキーを戻す必要がありますが、最も一般的なのは以下のコードで、2 s以内にキーを連続的に押してアプリケーションを終了することを実現していますが、私はfragmentを使っています.切り替え時に戻りスタックに追加しました.戻り時に戻りスタックを一度弾き出して、アプリケーションを終了したいと思っています.ここ(extends FragmentActivity)に最終コードを直接貼り付けます.
private boolean isExit = false;
    //    
//    @Override
    public void onBackPressed() {
//        super.onBackPressed();
//          
        //  fragment            ,      
        if (!getSupportFragmentManager().popBackStackImmediate()) {
            if(!isExit) {
                isExit = true;
                Toast.makeText(this, "        ", Toast.LENGTH_SHORT).show();
                new Timer().schedule(new TimerTask() {
                    @Override
                    public void run() {
                        isExit = false;
                    }
                }, 2000);
            } else {
                finish();
            }
        }

    }
実際には、通常の考え方で直接キーを返す方法は、スタックに戻る内容をポップアップするのではなく、私たちの2 s終了プログラムを実行し、androidが持っている方法を直接使用して、スタックに戻る内容をポップアップすることができることを発見しましたが、アプリケーションを終了するときに私たちが望んでいる効果はありません.そこで2つを組み合わせて、ソースコードの表示を始めました
FragmentActivityでキーを返して実行する方法
public void onBackPressed() {
        if (!mFragments.getSupportFragmentManager().popBackStackImmediate()) {
            supportFinishAfterTransition();
        }
    }
supportFinishAfterTransition()これはアプリケーションの終了方法であり、ここで本人が関心を持っている場所ではなく、上記の判断条件であれば.
公式の解釈を見てみましょう
android.support.v4.app.FragmentManager
public abstract boolean popBackStackImmediate()
Like popBackStack(), but performs the operation immediately inside of the call. This is like calling executePendingTransactions() afterwards.
Returns:
Returns true if there was something popped, else false.
ハハハ、Returns true if there was something popped,else false.つまり私がスタックに戻ってsomethingがあればtrueに戻って、そこで上のコードがあって、更に前のandroidのfragment活動スタックの単例を結びつけて、fragmentだけではなくて、正常なactivityもできて、個人の感じは完璧です(スタックに戻って順番に弾いてからアプリケーションを脱退します)