使用后退按钮恢复活动

时间:2010-04-19 01:29:55

标签: android

我正在创建一个使用DashboardActivity& amp;一个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)返回上一个活动 3)显示进度对话框,直到#1的响应返回(响应处理程序在设置活动中;我们现在在仪表板活动中) 4)“刷新”仪表板

实现这一目标的最佳方法是什么,以便我可以恢复仪表板。就像我说的那样,当我覆盖onResume方法时,它会在首次创建活动时被调用。我正在考虑将我的webservice调用放在onResume中,所以每次进入Activity时都会调用它一次,但这似乎不是最干净的方式。

你对1-4有什么建议?

1 个答案:

答案 0 :(得分:1)

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

或者,您可以将DashboardActivity设置为singleTop launch mode然后使用startActivity()来自SettingsActivity移至DashboardActivity,如果设置有改变。如果DashboardActivitysingleTop,则系统不会创建新实例,新的Intent会传递给onNewIntent() method,您可以在那里重新加载设置。