在我的项目中,我使用了许多AsyncTask
。它们都通过http发送一些数据到服务器。在其中一些任务中,我通过execute( data... )
传递数据。在另一些任务中,我使用构造函数来实现:
new SomeTask().execute( 1, 2, 3 );
或者
new SomeOtherTask( 1, 2, 3 ).execute();
基本上这些调用是等价的,因为AsyncTask
不能被重复使用并且是无状态的。
如何更好地使用它们?我是否遗漏了什么?
在我的项目中,我使用了许多AsyncTask
。它们都通过http发送一些数据到服务器。在其中一些任务中,我通过execute( data... )
传递数据。在另一些任务中,我使用构造函数来实现:
new SomeTask().execute( 1, 2, 3 );
或者
new SomeOtherTask( 1, 2, 3 ).execute();
基本上这些调用是等价的,因为AsyncTask
不能被重复使用并且是无状态的。
如何更好地使用它们?我是否遗漏了什么?
execute
方法(如果它们都共享相同的类型,当然)。使用自定义构造函数会强制你编写它,并将参数存储在私有变量中,这是无用的,除非这些参数例如在OnPostExecute
方法中被使用。onPre/PostExecute
也是这种情况。例如,在 pre
中我显示进度条,在 post
中隐藏它。 - injecteer使用 new SomeTask().execute( 1, 2, 3 );
这比将值传递给构造函数更好。如果您将输入作为参数传递给构造函数,则需要创建成员变量,这是不必要的,因为 AsyncTask 允许我们在 execute 方法中传递可变参数。
除非有必要维护传递给 AsyncTask 的输入的成员变量,否则不应使用构造函数传递输入。