Android: альтернативы AsyncTask?

для моего приложения я создал фреймворк для всех сетевых вызовов внешнего API. Я поместил все в «Службы» как: UserServiceи MessageServiceт. Д. Итак, теперь, когда я хочу вызвать сетевой метод, я не могу сделать это в UI-Thread из моего, Activityпоэтому я сделал 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 не подходит для этого?

android,android-asynctask,frameworks,

11

Ответов: 7


6 ов принято

Есть много альтернатив AsyncTask:

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

и плюс Needle - многопоточная библиотека для Android

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


4

Возможно, вы можете использовать стороннюю библиотеку, такую ??как Retrofit. Если вы работаете с изображениями, я настоятельно рекомендую пикассо


4

Помните, что у Android есть предел потоков и AsyncTasks.

Вы можете использовать 2 библиотеки для выполнения той же работы AsyncTasks:

1) Волейбол -> http://www.androidhive.info/2014/05/android-working-with-volley-library-1/

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

ОБНОВИТЬ

Я действительно рекомендую Retrofit 2. http://square.github.io/retrofit/

Удачи в вашем выборе.

С Уважением,

Uilton.


2

Если вы предпочитаете сторонние библиотеки и предпочитаете библиотеку с простотой и хорошей документацией и поддержкой, то Loaders - лучший выбор.

Для нашего удовольствия AsyncTaskLoader (подкласс Loaders) выполняет ту же функцию, что и AsyncTask, но лучше, а также легче справляется с изменениями конфигурации Activity. И самое лучшее, что он ведет в жизненных циклах фрагментов и действий.

Для получения дополнительной информации и подклассов, пожалуйста, проверьте эту документацию .


0

Погрузчики следует использовать вместо прямого использования задач Async. Существуют специальные API-интерфейсы Loader для конкретных операций, таких как выполнение транзакций в базе данных sqlite и т. Д.

андроид, андроид-AsyncTask, рамки,
Похожие вопросы