Pull to refresh

Comments 9

В андроиде лоадеры перезапускаются в некоторых случаях автоматически, если это угодно юзеру. Используется ли такой подход в вашей реализации?

Код с with(context) некорректен, так как передав экземпляр Activity в него, она будет жить до смерти приложения.
Для примера — я нахожусь на Activity1, вызываю данный метод и происходит инициализация, затем закрываю Activity1 и открываю Activity2 и в этом случае синглтон все еще ссылается на уже убитый системой экземпляр. Чтобы предотвратить это, сделайте так, как действительно сделано в Picasso — используйте
this.context = context.getApplicationContext();
Ваш код
public static FeedLoader with(Context context) {
    if (singleton == null) {
        synchronized (FeedLoader.class) {
            if (singleton == null) {
                singleton = new FeedLoader(context);
            }
        }
    }
    return singleton;
}
мне кажется что activity передается, чтобы в дальнейшем сделать вот это
 ((FragmentActivity)context).getSupportLoaderManager().
                restartLoader(loaderId, bundle, callback);
В таком случае, это очень и очень плохой код. Это тоже самое, что в метод передавать Object, а затем его приводить к FragmentActivity даже без проверки типа объекта.
я согласен с вами абсолютно. мне кажется автору стоит немного подумать над реализацией и привести код в порядок.
Согласен с вами! С проверкой и без преобразования

public void start(int loaderId, final FragmentActivity context) {
    ....
    assert context instanceof FragmentActivity : "Run possible only from FragmentActivity";
    context.getSupportLoaderManager().restartLoader(loaderId, bundle, callback);
}
Вы правы! Первоначальная цель была посмотреть как получится, потом интересно ли вообще в использовании.
Retrofit сам по себе умеет делать асинхронные запросы. Поэтому оборачивать его дополнительно в AsyncTaskLoader не требуется. Если конечно не использовать не асинхронный вызов.
Второе, на сколько понял из кода используется общий callback
public class MyActivity extends Activity implements Callback<List<Issue>> {

Или нет?
static class IssuesLoader extends RetrofitLoader<List<Issue>, GitHub> {

Сразу с ходу без исследования, за минуту не понять
Я же хотел именно что бы было понятно за минуту и запуск в одну строку. Ну почти в одну)
В вашем примере есть
@Inject
    GitHub gitHubService;

Тут явно более сложная реализация или даже сказать применение. Может быть ее и удобнее и полезнее было применить в вашем случае
Sign up to leave a comment.

Articles