我最近创建了我的第一个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