Android:AsyncTask的替代品?

对于我的应用程序,我为所有的外部API调用networking做了一个框架。 我把所有的东西都放在“服务”中,如: UserServiceMessageService等。所以现在当我想调用一个networking方法,我不能在我的Activity的UI线程中做这个,所以我做了一个AsyncTask ,一切都很好=)

但是现在我想要的东西就像给AsyncTask执行方法,所以我不需要为我的networking框架的每个方法写一个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这不好呢?

  • 如果用户已经离开它,AsyncTask如何仍然可以使用一个Activity?
  • Android:从服务器下载文件,并使用AsyncTask在通知栏中显示下载进度
  • 为什么在LoaderManager中使用AsyncTaskLoader而不是简单的Handler?
  • Android - AsyncTask没有执行
  • Android媒体播放器:开始调用状态4错误(-38,0)
  • 使用OKHttp,AsyncTask和OKhttpasynchronous请求中的同步请求有什么区别?
  • 当AsyncTasks运行时,处理屏幕方向更改
  • 如何在AsyncTask中举杯祝酒,提示使用Looper
  • 有很多AsyncTask的select:

    https://android-arsenal.com/tag/9

    并加上Needle – Android的multithreading库

    http://zsoltsafrany.github.io/needle/

    也许你可以使用第三方库像Retrofit如果你使用图像,我强烈build议毕加索

    请记住,Android有线程和AsyncTasks的限制。

    您可以使用2个库来完成AsyncTasks的相同工作:

    1)Volley – > http://www.androidhive.info/2014/05/android-working-with-volley-library-1/

    2)LoopJ – > http://loopj.com/android-async-http/

    UPDATE

    我真的推荐Retrofit 2. http://square.github.io/retrofit/

    祝你好运。

    问候,

    Uilton。

    如果你不喜欢第三方库,并喜欢简单和良好的文档和支持图书馆, 装载机是最好的select。

    对于我们的喜悦,AsyncTaskLoader(Loaders的子类)执行与AsyncTask相同的function,但更好,也可以更轻松地处理Activityconfiguration更改。最好的事情是在Fragments和Activities的生命周期内运行。

    有关更多信息和子类,请查看本文档 。

    您可以使用Volley库,它在后台线程上工作,并在事情完成后让您控制回主线程。