簡體   English   中英

旋轉屏幕后如何防止我的 Asynctask 再次執行?

[英]How to prevent my Asynctask from executing again after rotating the screen?

對於大學項目,我需要開發一個 Android 應用程序,該應用程序從 API 檢索 JSON 數據並將其顯示在 RecyclerView 中。 應用要求之一是在更改屏幕方向后不應重新執行 Asynctask。 換句話說,一旦執行了 Asynctask 並且 RecyclerView 與檢索到的數據一起顯示,它應該不必在旋轉屏幕后再次檢索數據。

出於演示目的,我在 onPostExecute 方法中添加了一個 toast 來顯示已顯示的項目數量:

在此處輸入圖片說明

在此處輸入圖片說明

如您所見,旋轉屏幕后 toast 重新出現,這意味着重新執行了 Asynctask。 我想防止這種情況發生,但我不知道怎么做。

嘗試將此行添加到清單文件的活動標記中。

<activity name= ".YourActivity" android:configChanges="orientation|screenSize"/>

當您編寫此參數時,您不想處理活動中的任何內容,但 Android 會處理此問題。 它將保持活動的現有狀態。

如果您為橫向使用不同的布局文件,此方法將破壞您的布局,因此您可以使用一些替代方法來保持狀態。

在您的活動中覆蓋onSaveInstanceState方法並在Bundle添加一些參數

protected void onSaveInstanceState(Bundle bundle) {
  super.onSaveInstanceState(bundle);
  bundle.putLong("param", value);
}

並恢復onCreate的值以確保狀態已經創建。

public void onCreate(Bundle bundle) {
  if (bundle != null){
    value = bundle.getLong("param");
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM