0

在查看此活动时,我会点击手机上的主页按钮将我带到手机的主屏幕。当我在 30 多分钟后重新打开应用程序时,下面的字符串不会打印出我在 30 多分钟前在屏幕上看到的玩家轮到,而是打印出“玩家 0 轮到”,这不是我的应用程序的有效玩家编号. 这让我相信当我重新打开应用程序时,它没有从我存储数据的 GlobalClass 中获取 whoth_turn 数据。

private int whose_turn;
private TextView tv1;

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_game_screen);

    tv1 =(TextView)findViewById(R.id.game_msg);      

    whose_turn = GlobalClass.whoseturn;

    tv1.setText("Player " + Integer.toString(whose_turn) + "'s Turn");

}

我确信它与活动的生命周期有关,但我不确定在这 30 多分钟内它经历了哪些阶段,或者如何确保它显示正确的数据。

有人能告诉我这里发生了什么吗?我已经尝试阅读与此问题相关的文档以及使用 savedInstanceState 的其他一些实验性解决方案,但我没有运气。

4

1 回答 1

2

我猜GlobalClass是一static堂课。当类加载器被销毁时,这将丢失。如果你想让它真正持久,那么最好的地方就是这样SharedPreferences。在这里您可以存储简单的数据并随时检索。您不能保证static类变量在需要时可用。

SharedPreferences Docs有一个很好的例子来开始保存和检索它们。

完整的 SharedPreferences 文档

其他存储选项

于 2013-10-19T00:08:22.810 回答