繁体   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