簡體   English   中英

清除所有活動

[英]Clear all activities

我有 4 個活動:A、B、C 和 D。還有一個:E。

當 y 在 A、B、C 和 D 之間啟動一個新活動時沒有問題。但是在其中的某些點(例如,登錄成功時)我們想啟動活動 E 但清除所有 A、B、C 和D 活動(即清除后退堆棧)。

所以,我希望當 yoy 到達活動 E 時,按下后退按鈕,您將離開應用程序。

我正在嘗試在 startActivity 中添加標志:Intent.FLAG_ACTIVITY_CLEAR_TASK、Intent.FLAG_ACTIVITY_CLEAR_TOP 等等,但我無法實現這種行為。

任何的想法?

謝謝!

Intent intent = new Intent(this, EActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                this.startActivity(intent);
                this.finish();

將活動 E 中的 onBackPressed 覆蓋為

    @Override
    public void onBackPressed() {
        moveTaskToBack(true);
    }

嘗試為startActivity Activity A、B、C 和 E

Intent intent = new Intent(A.this,B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
A.this.finish();

並在androidmanifest.xml聲明您的 A、B 和 C 活動:

<Activity android:name=".A" 
    android:launchMode="singleInstance" />
 //..do B,C activities same

並覆蓋活動 E 中的 onKeyDown

@verride
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if ((keyCode == KeyEvent.KEYCODE_BACK))
    {
        Activity_E.this.finish();
    }
    return super.onKeyDown(keyCode, event);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM