1
我對Retrofit2回調和onSaveInstanceState存在疑問。我想保存兩個變量的狀態,var1和var2 in onSaveInstanceState。這兩個變量(實際上不是簡單變量)在onResponse方法中的Retrofit回調中取值。它只持續幾毫秒,但如果我在兩個變量在onResponse應用程序崩潰中獲取其值之前旋轉設備。我不太清楚如何解決這種情況。我想知道你的方法,以避免崩潰(實際上我有2個改造回調,它們彼此獨立,一個用於繪製圖形,另一個用於在文本視圖中顯示數據)。預先感謝併爲我糟糕的英語語言技能找藉口。Retrofit回調和saveinstanceState
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("var1",var1);
outState.putInt("var2",var2);
}
retrofitcallback() {
return new Callback<T>() {
public void onResponse() {
var1=...
var2=...
}
public void onFailure() {
}
};
}
感謝您的回答。因爲我沒有使用數據庫,所以我不能使用裝載機。通過服務,我想你的意思是IntentService,我以前認爲它,但我不明白使用服務的好處,我仍然需要將服務的結果保存在變量中,並在onSaveInstanceState中使用它,如果用戶旋轉屏幕之前,服務完成我會有同樣的問題,我不? –
您也可以使用沒有數據庫的裝載機。使用LoaderManager的加載器需要關心Activity/Fragment的生命週期。您只需在加載器onForLoad方法和改進回調調用deliverResult中發送請求。活動重新啓動時,所有數據都不會被銷燬。 您可以使用Service(通常的Service或IntentService - 無關緊要)實現同樣的功能,但檢索結果會更困難。 Otto/EventBus作爲可能的變體。 –