长时间在后台运行的Android应用被杀死

时间:2018-12-21 03:48:47

标签: android android-savedstate android-ondestroy

我的android应用在后台处于运行状态时被Android OS杀死。因此,当它重新启动时,它是一个空白屏幕,因为在OS杀死进程时所有数据都被清除了。 m不在SQLite或sharedpreference中存储任何数据。甚至在应用程序被杀死后,用数据显示UI组件的最佳方法是什么?(不幸的是,由于敏感数据/按要求,无法实现SQLite)。

1,无论何时在基本活动oncreate方法中发生这种情况,我都在oncreate方法中接收到saveInstanceState。所以我只是从那里调用启动器方法,应用程序按预期运行。但这是完美的实现方式吗?。

2 个答案:

答案 0 :(得分:1)

如果我理解正确,那么在保存简单状态并从中恢复之前,savedInstanceState应该是正确的。

static final String STATE_SCORE = "playerScore";
static final String STATE_LEVEL = "playerLevel";
// ...


@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save the user's current game state
    savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
    savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);

    // Always call the superclass so it can save the view hierarchy state
    super.onSaveInstanceState(savedInstanceState);
}

然后在应用程序被终止并重新启动时:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); // Always call the superclass first

    // Check whether we're recreating a previously destroyed instance
    if (savedInstanceState != null) {
        // Restore value of members from saved state
        mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
        mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
    } else {
        // Probably initialize members with default values for a new instance
    }
    // ...
}

有关更多详细信息,请参阅here

答案 1 :(得分:0)

与此同时,服务器端会话很可能已经过期。

  • onPause()上注销用户,然后在onResume()上再次登录。
  • 或使用service使服务器端会话保持活动状态。