【问题标题】:Android app resets after some idle timeAndroid 应用程序在空闲时间后重置
【发布时间】:2017-01-20 19:00:30
【问题描述】:

我最近创建了我的第一个 Android 应用程序。这是一个非常简单的应用程序,它有两个计数器来记录 IRL 纸牌游戏中两支球队的得分。无论如何,如果用户选择在打开应用程序的同时访问其他应用程序,例如 ex。检查whatsapp并让应用程序在后台运行,它工作正常,大部分时间......如果用户离开应用程序的时间较长,应用程序往往会重置为默认状态,这意味着分数计数器都是重置为0,这非常令人沮丧。有没有办法防止这种情况发生?就像将应用程序的状态保存在内存中,直到用户返回或类似的东西?应用程序计数器是基本的 Textview 对象。提前致谢!

【问题讨论】:

    标签: java android android-studio reset


    【解决方案1】:

    您无法阻止您的进程被终止。将您的数据保存在数据库、SharedPreferences 或其他类型的文件中,如果您希望这些数据在进程终止后仍然存在。

    【讨论】:

    【解决方案2】:

    可以通过 savedInstanceState 变量保存/恢复状态。

    @Override public void onCreate(Bundle savedInstanceState) { }
    

    https://developer.android.com/guide/components/activities/activity-lifecycle.html

    当用户使用其他应用程序时,会调用 onPause(), onStop() 事件。一段时间后,操作系统释放内存并调用 onDestroy()。这是您保存任何状态的最后机会。

    【讨论】:

    • 这种状态只会持续一小段时间(约 30 分钟左右)。这可能还不够。
    【解决方案3】:

    你需要实现 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

    【讨论】:

    • 谢谢。我该如何准确地使用它?我可以把它放到我的代码中吗?很抱歉我是新手,代码对我来说看起来不熟悉,所以不太确定该怎么做。
    • 是的,你可以使用但设置你自己的变量:这里 savedInstanceState.putInt("int", 1);这里是 int myInt = savedInstanceState.getInt("int");
    猜你喜欢
    • 2015-09-28
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多