![](/img/trans.png)
[英]How to do different actions for a different Extras sent to an activity?
[英]Recreate activity with different extras
我需要重新創建 Activity - 打開一個帶有不同附加功能的新屏幕,當我嘗試使用recreate()
執行此操作時,它可以完美運行,但是有一個丑陋的黑屏。
setIntent(intent);
this.recreate();
當我嘗試finish()
和startActivity(newIntent)
,沒有黑屏,但在onDestroy()
之前以某種方式調用了onCreate()
onDestroy()
finish();
startActivity(newIntent);
這是我的新意圖:
Intent newIntent = new Intent(this, DeviceActivity.class);
newIntent.putExtra(Consts.INTENT_ID, device.getID());
newIntent.putExtra(Consts.INTENT_DEVICE_NAME, device.getID());
有任何想法嗎?
調用onCreate()
頻率無關緊要; 只需檢查savedInstanceState == null
,以確定何時在該方法中運行代碼。 當它第一次運行時, savedInstanceState
將始終為null
。 將一些繁重的代碼移到方法onCreate()
之外也可能有意義,以防它可以在Activity
生命周期的稍后運行。
這里的一種解決方案是調用startActivity()
而不調用finish()
。 這將創建您的活動的新實例,基本上是一個新屏幕,但使用相同的代碼。
但這完全取決於您希望用戶看到的內容。 我們應該從用戶交互的角度來討論這個問題,而不是從作為實現細節的“活動”和“意圖”的角度來討論。
好的,所以問題是我連接/斷開連接到一些從onCreate() & onDestroyed()
觸發的管理器。
onDestroyed() 異步發生,我們無法知道系統何時會到達它(即使我們調用finish()
)。
所以在我將這個管理器啟動到onPause() & onResume()
它運行順利並解決了我的問題。
謝謝大家的幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.