本
AsyncTask类可以被认为是一个非常方便的线程机制。它为您提供了一些工具,您可以使用简单的Java线程根本没有的工具,例如取消清除操作。您无需在后台执行任何UI。您可以通过将一个编写为匿名类来简单地执行一个,如下所示:
new AsyncTask<Integer, Void, Void>(){ @Override protected Void doInBackground(Integer... params) { // **Code** return null; } }.execute(1, 2, 3, 4, 5);它会执行您
doInBackground使用给定参数在后台线程中放入的任何内容。同样,您可以简单地使用
Void和执行而无需任何参数。
我可以想到以这种方式执行线程的唯一好处是可以帮助将来进行维护。在某些情况下,您可能想要修改UI线程上需要的某些内容,在这种情况下,您将覆盖其他方法。其他情况是,您只是没有采取足够的行动来证明编写另一个类是合理的,因此只需动态创建一个类并使用它即可完成。
编辑:
回答#3:它们实际上是相同的。
Void就像其他对象一样,该对象是Java对象。您没有使用
Void,因此在该位置使用的内容无关紧要。只是
AsyncTask合同需要传入三种类类型,默认情况下,它们是
Object所有内容的基础类。



