簡體   English   中英

AsyncTask中執行參數的類型安全替代方案

[英]Type-safe alternative for execute parameters in AsyncTask

有兩種方法可以將參數傳遞給AsyncTask

  1. 定義第一個通用參數,並使用此類型的列表/數組,並將其通過execute()傳遞
  2. 通過構造函數傳遞所有必要的參數,將其存儲在字段中,並在execute訪問它們

我發現第一種方法更具可讀性,但是有時在類型安全性方面缺乏靈活性,例如,如果要傳遞String,Integer和Boolean,似乎不清楚如何實現此方法。

public Result doInBackground(String... params) {
   String param1 = params[0];
   int param2 = Integer.valueOf(params[1]);
   boolean param3 = Boolean.valueOf(params[2]);
   // ...
}

字符串分析,將其放在Bundle等中。總有解決方案,但是從語義/方法簽名的角度來看,這是令人不快的。 有其他選擇嗎?

為什么不創建一個類持有者作為例子

static Class Holder {
  int i;
  String s;
  boolean b;
}

public Result doInBackground(Holder... params) {
   Holder holder = params[0];
   String holder.s;
  // ...
 }

然后通過execute()將它發送到doBackground()。當我想發送到Web時,我做了很多次

這只是松鼠的一個例子。 希望能幫助到你。

您可以改為使用裝載程序

一開始可能很麻煩,但是您不會遇到任何類型安全的問題,因為它的工作方式完全不同。

加載程序的主要功能是與綁定到活動/片段生命周期的管理器一起工作。

暫無
暫無

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

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