2016-02-26 60 views
0

比方說,我有2個活動A和B.我從A去B,然後點擊主頁按鈕。在幾小時或幾天之後或者直到活動被殺死時,有幾個靜態變量正在初始化爲A.android - 靜態var被殺,但活動被帶到前臺

,我從Recent按鈕再次啓動應用程序。活動B成爲這個應用程序的新入口點,但靜態變量不再具有任何價值,並且沒有機會獲得初始化,除非我重定向回到A.

我的launchMode這兩個活動都是singleTop。不知道是否重要,但我試過singleTop,singleInstancestandard沒有人工作。我想我的預期行爲將是進入點始終是A或任何其他活動,如果沒有被殺死,當然靜態變量仍然持有價值。

謝謝!

回答

0

問題可能是因爲當你的應用程序在後臺的Android o.s必須清理內存釋放資源用於其他應用

+0

你確定,Android系統在需要內存時被清除了靜態值嗎?如果清除靜態概念有什麼用? – Boopathi

+0

我知道活動可能會被殺死。即時尋找解決方案。你知道是否有一種方法總是從活動A開始,如果應用程序被殺害? – user1865027

0
  • 我希望那些static變量是基本數據類型的。
  • 即使應用程序在後臺Android系統在一段時間後會終止進程。
  • 所以你可以做的是通過IntentActivityB通過那些原始變量。
  • 現在,如果應用程序從後臺死亡並將其帶到前臺,則使用相同的意圖啓動ActivityB,並且仍然可以獲取傳遞的變量。

將變量傳遞給ActivityB而不是靜態變量。

Intent intent = new Intent(); 
intent.putExtras("Id", 1); 
intent.putExtras("Name", "kevz"); 
startActivity(intent, ActivityB.class); 

現在ActivityB得到傳遞的變量值 -

int Id = getIntent().getIntExtra("Id", -1); // -1 is default value. 
String Name = getIntent().getStringExtra("Name", "unknown"); // unknown is default value 
+0

不,這些靜態變量不是全部的原始類型。如果我必須通過意圖活動B傳遞變量,那麼使用靜態的最重要的是什麼?如果我有更多的活動,那麼我必須一路通過它們?我認爲如果申請被殺,我寧願開始活動A.任何想法如何可以做到? – user1865027

0

如果靜態變量不工作,你可以嘗試使用變量getter()setter()方法。

相關問題