簡體   English   中英

靜態var被殺死但活動進入前台

[英]android - static var is killed but activity is brought to foreground

假設我有2個活動A和B。我從A轉到B,然后按“主頁”按鈕。 有一些靜態變量在A中初始化。

幾個小時或幾天之后,或者直到活動被終止,我從“最近”按鈕再次啟動該應用程序。 活動B成為該應用程序的新入口點,但是靜態var不再擁有任何值,除非我重定向回A,否則它沒有初始化的機會。

launchMode兩個活動是singleTop 不知道這是否重要,但是我嘗試了singleTopsingleInstancestandard都不起作用。 我想我的預期行為是入口點始終是A或任何其他活動(如果未被殺死),當然靜態var仍然保持價值。

謝謝!

問題可能是因為當您的應用程序在后台運行時,Android操作系統必須清除內存才能為其他應用程序釋放資源

  • 我希望這些static變量屬於原始數據類型。
  • 即使該應用程序在后台運行,Android系統也會在一段時間后終止該進程。
  • 因此,您可以做的是將這些原始變量通過Intent傳遞給ActivityB
  • 現在,如果該應用程序從后台被殺死並將其帶到前台,則使用相同的意圖來啟動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

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

暫無
暫無

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

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