gpt4 book ai didi

android - 使用后退按钮恢复 Activity

转载 作者:行者123 更新时间:2023-11-29 02:17:12 25 4
gpt4 key购买 nike

我有一个正在使用 DashboardActivity 和 SettingsActivity 创建的应用程序。在仪表板上,我显示了一个对象,但是当我进入设置时,我希望能够选择/取消选择 X 选项。用户单击后退按钮后,我将该数据保存在本地并保存到服务器。一旦手机收到来自服务器的成功消息,表明它已正确存储,我想重新加载仪表板。

我想我会用 onPause 和 onResume 来做到这一点,但它们在 DashboardActivity 首次创建时被调用。将设置保存到服务器后,通过调用我的 Web 服务重新加载仪表板的最佳方法是什么?这是按下后退按钮时我正在做的事情

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Save data to the server once the user hits the back button
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
SchoolSearchActivity.this.divisionProxy = new DivisionProxy(SchoolSearchActivity.this.saveUserDivisionHandler);
SchoolSearchActivity.this.divisionProxy.submitUserDivisions(SchoolSearchActivity.this.userDivisions, SchoolSearchActivity.this.user_id);
//SchoolSearchActivity.this.finish();
//Toast.makeText(SchoolSearchActivity.this, "Divisions Saved",Toast.LENGTH_LONG).show();
}
return true;
}

上面打开一个 HTTP 连接,当收到响应时,处理程序处理响应。我想要:1)向服务器提交数据2) 返回上一个 Activity 3) 显示一个进度对话框,直到 #1 的响应返回(响应处理程序在设置 Activity 中;我们现在在仪表板 Activity 中)4)“刷新”仪表板

完成此操作的最佳方法是什么,这样我就可以按原样恢复仪表板。就像我说的,当我覆盖 onResume 方法时,它会在 Activity 首次创建时被调用。我正在考虑将我的 Web 服务调用放在 onResume 中,因此每次进入 Activity 时都会调用一次,但这似乎不是最干净的方法。

对于 1-4,您有什么建议?

最佳答案

你可以继承Application并设置一个标志以显示您当前缓存的数据是“脏的”。您创建自己的 Application 子类来存储 transient 全局应用程序状态,这正是您在这里想要的。当用户在 SettingsActivity 中更改他们的配置时,您可以在应用程序级别设置标志,然后在 onResume() 中,您可以检查该标志并且仅在您知道时调用 Web 服务用户改变了一些东西。

或者,您可以将 DashboardActivity 设置为 singleTop launch mode如果设置已更改,然后使用 startActivity() 调用从 SettingsActivity 移动到 DashboardActivity。如果 DashboardActivitysingleTop,则不会创建新实例,新的 Intent 将传递给 onNewIntent() method您可以在那里重新加载您的设置。

关于android - 使用后退按钮恢复 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2664750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com