一千萬個為什麽

搜索

使用後退按鈕恢復活動

I have an application I am creating with a DashboardActivity & a SettingsActivity. On the dashboard, I have one object displayed, but when I go into settings, I want to be able to select/deselect X options. Once the user clicks the back button, I save that data locally and to the server. Once the phone receives a success message from the server that it was stored properly, I want to reload the dashboard.

我以為我會使用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的建議是什麽?

最佳答案

您可以繼承 Application 並設置一個標誌,表明您當前的緩存數據是“臟”的。您可以創建自己的 Application 子類來存儲 transient 全局應用程序狀態,這正是您想要的。當用戶在 SettingsActivity 中更改其配置時,您在應用程序級別設置標誌,然後在 onResume()中,您可以檢查該標誌,並在您知道時僅調用Web服務用戶改變了一些東西。

或者,當您可以將 DashboardActivity 設置為 singleTop 啟動模式,然後使用 startActivity()調用從 SettingsActivity 轉移到 DashboardActivity 如果設置已更改。如果 DashboardActivitysingleTop ,則不會創建新實例,新的 Intent 將傳遞給 onNewIntent() method 您可以在那裏重新加載設置。

轉載註明原文: 使用後退按鈕恢復活動