簡體   English   中英

使用不同的附加功能重新創建活動

[英]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.

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