首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 重新啟動 Activity 觸發 onCreate:使用 Intent 搭配 Flags

     編輯:程式設計綜合問答

標準重啟代碼

Intent intent = getIntent();
finish();
startActivity(intent);

避免動畫閃爍

Intent intent = getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);

完全重置任務堆疊(如登出後回登入頁)

Intent intent = new Intent(this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();

Flags 對照

Flag效果
FLAG_ACTIVITY_NO_ANIMATION無轉場動畫
FLAG_ACTIVITY_CLEAR_TOP若目標已在堆疊,清除其上方所有 Activity
FLAG_ACTIVITY_NEW_TASK在新任務堆疊啟動
FLAG_ACTIVITY_CLEAR_TASK配合 NEW_TASK 清空新任務堆疊

注意

  • recreate() (API 11+) 也可重建 Activity,但會保留 Fragment 狀態,不如 finish+start 徹底
  • 若在 onCreate 中有耗時初始化,重啟會再次執行,考慮用 ViewModel 保留資料
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved