为了我的应用程序,我为所有对外部API的网络调用制作了一个框架。 我将一切都放在“服务”中,例如:UserService
,MessageService
等。 现在当我想调用网络方法时,我不能在我的Activity
的UI线程中这样做,所以我创建了一个AsyncTask
,一切都很好 =)
但现在我希望像将要执行的方法提供给AsyncTask
,这样我就不需要为我的网络框架的每个方法编写一个AsyncTask
。 所以,我不再需要像下面这样:
public class NetworkTask extends AsyncTask<UserService, Void, Void> {
@Override
protected Void doInBackground(UserService... params) {
UserService userService = params[0];
userService.getUser();
return null;
}
}
我希望有一种更加 "抽象" 的方法,这样 AsyncTask
就不需要知道 "getUser" 方法的存在?但是我找不到任何想法来做到这一点...也许 AsyncTask 对于这个问题并不好?
IntentService
通常被用作AsyncTask
的替代方案。 - pathfindereliteAsynctask
。我建议你检查来自Square的Retrofit或来自Google的Volley进行网络操作,根据这篇文章http://instructure.github.io/blog/2013/12/09/volley-vs-retrofit/,它们在网络操作方面更快。 - M090009