0

我的android应用程序在后台保持一段时间后被Android操作系统杀死。所以当它重新启动时,它是一个空屏幕,因为在操作系统杀死进程时所有数据都被清除了。不幸的是,我没有存储SQLite 或 sharedpreference 中的任何数据。即使在应用程序被杀死后,用数据显示 UI 组件的最佳方式是什么?(不幸的是,由于敏感数据/根据要求无法实现 SQLite)。

1,我观察到,每当在基本活动 oncreate 方法中发生这种情况时,我都会在 oncreate 方法中接收到 savedInstanceState。所以我只是从那里调用启动器方法,并且应用程序按预期工作。但这是完美的实施方式吗?

4

2 回答 2

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
    }
    // ...
}

请参阅此处了解更多详情。

于 2018-12-21T04:33:58.447 回答
0

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

  • 注销用户onPause()并再次登录onResume()
  • 或使用 aservice使服务器端会话保持活动状态。
于 2018-12-21T03:59:41.433 回答