我最近創建了我的第一個Android應用。這是一個非常簡單的應用程序,它有兩個計數器用於在IRL紙牌遊戲中爲兩個團隊保留分數。無論如何,如果用戶選擇訪問其他應用程序,而應用程序打開前例如。檢查WhatsApp,並讓應用程序在後臺運行,大多數情況下工作正常......如果用戶遠離應用程序很長時間,應用程序往往會重置爲默認狀態,這意味着分數計數器都是重置爲0,這是非常令人沮喪的。有沒有辦法來防止這種情況發生?就像將應用程序的狀態保存在內存中,直到用戶返回或類似的東西?應用計數器是基本的Textview對象。提前致謝!Android應用在空閒時間後重置
回答
你不能阻止你的進程被終止。如果您希望數據即使在流程終止後仍能存活,請將您的數據保存在數據庫,SharedPreferences
或其他類型的文件中。
可以通過savedInstanceState變量保存/恢復狀態。
@Override public void onCreate(Bundle savedInstanceState) { }
https://developer.android.com/guide/components/activities/activity-lifecycle.html
當用戶使用其他應用程序,則在onPause()的onStop()事件被調用。一段時間後,操作系統釋放內存並調用onDestroy()。這是您拯救任何州的最後機會。
這個狀態只會持續很短的時間(約30分鐘左右)。這可能或可能不夠。 – CommonsWare
您需要的onSaveInstanceState實施和onRestoreInstanceState
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putInt("int", 1);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
int myInt = savedInstanceState.getInt("int");
}
或使用庫:IcePick
謝謝。我如何準確使用它?我可以把它放到我的代碼中嗎?我很抱歉,我對此感到陌生,代碼對我來說看起來並不熟悉,所以不太確定該怎麼做。 – Hackermaan
是的,你可以使用但設置你自己的變量: here savedInstanceState.putInt(「int」,1); and here int myInt = savedInstanceState.getInt(「int」); –
- 1. 長時間閒置後重新初始化Twitter Fabric Android應用
- 2. 在一段空閒時間後鎖定android應用程序
- 3. 應用程序在Android應用程序空閒時間
- 4. 長時間閒置後重新啓動Android活動 - > NullPointerException
- 5. 計時器會在閒置一段時間後殺死android應用程序嗎?
- 6. 應用程序的空閒時間
- 7. WPF:應用程序空閒時間
- 8. Android應用程序空閒時檢測
- 9. 長時間空閒後放置消息不起作用
- 10. 爲什麼Android在空閒時間過長後會丟失位置?
- 11. 應用程序長時間空閒後,SignalR無法重新連接
- 12. 如何獲得Android的空閒時間?
- 13. 401在空閒時間後使用OAuth2.0時無效憑證
- 14. 空閒後返回mainActivity Android
- 15. iOS應用程序閒置一段時間後崩潰
- 16. symfony2閒置一段時間後註銷
- 17. 以編程方式重置Windows XP空閒時間
- 18. 在空閒時間30分鐘後ViewState變空
- 19. 即使應用程序空閒時,ASP.NET性能%GC中的時間即使當應用程序空閒時
- 20. Cant Get PC空閒時間
- 21. MediaWIki會話空閒時間
- 22. RTOS中的空閒時間
- 23. VB檢測空閒時間
- 24. PHP執行時間vs空閒時間
- 25. 在WPF應用程序中獲取不活動/空閒時間
- 26. 在我的iphone中實現空閒時間應用程序
- 27. 在Windows Mobile中微調應用程序空閒時間
- 28. MVC 5在空閒超時後應用Azure/IIS錯誤
- 29. iOS應用空閒然後鎖
- 30. 在空閒時爲Android運行應用程序
您可以防止一個過程被終止:https://developer.android.com/guide/components/services .html#Foreground,但這可能不是這個用戶想要的。 – 01BTC10
@ 01BTC10:這隻會增加過程將繼續存在的可能性。這不是一種保證,並且有辦法可以終止這個過程。 – CommonsWare