Comments 9
Синглтон!(
-2
В андроиде лоадеры перезапускаются в некоторых случаях автоматически, если это угодно юзеру. Используется ли такой подход в вашей реализации?
Код с with(context) некорректен, так как передав экземпляр Activity в него, она будет жить до смерти приложения.
Для примера — я нахожусь на Activity1, вызываю данный метод и происходит инициализация, затем закрываю Activity1 и открываю Activity2 и в этом случае синглтон все еще ссылается на уже убитый системой экземпляр. Чтобы предотвратить это, сделайте так, как действительно сделано в Picasso — используйте
Код с 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;
}
+2
мне кажется что activity передается, чтобы в дальнейшем сделать вот это
((FragmentActivity)context).getSupportLoaderManager().
restartLoader(loaderId, bundle, callback);
0
В таком случае, это очень и очень плохой код. Это тоже самое, что в метод передавать Object, а затем его приводить к FragmentActivity даже без проверки типа объекта.
+1
я согласен с вами абсолютно. мне кажется автору стоит немного подумать над реализацией и привести код в порядок.
0
Согласен с вами! С проверкой и без преобразования
public void start(int loaderId, final FragmentActivity context) {
....
assert context instanceof FragmentActivity : "Run possible only from FragmentActivity";
context.getSupportLoaderManager().restartLoader(loaderId, bundle, callback);
}
0
Вы правы! Первоначальная цель была посмотреть как получится, потом интересно ли вообще в использовании.
0
Если уж так хочется работать с сетью через Loaders, то есть скрещенный Retrofit+AsyncTaskLoader: github.com/rciovati/retrofit-loaders-example
Пользовался данным методом неоднократно.
Пользовался данным методом неоднократно.
0
Retrofit сам по себе умеет делать асинхронные запросы. Поэтому оборачивать его дополнительно в AsyncTaskLoader не требуется. Если конечно не использовать не асинхронный вызов.
Второе, на сколько понял из кода используется общий callback
Или нет?
Сразу с ходу без исследования, за минуту не понять
Я же хотел именно что бы было понятно за минуту и запуск в одну строку. Ну почти в одну)
В вашем примере есть
Тут явно более сложная реализация или даже сказать применение. Может быть ее и удобнее и полезнее было применить в вашем случае
Второе, на сколько понял из кода используется общий callback
public class MyActivity extends Activity implements Callback<List<Issue>> {
Или нет?
static class IssuesLoader extends RetrofitLoader<List<Issue>, GitHub> {
Сразу с ходу без исследования, за минуту не понять
Я же хотел именно что бы было понятно за минуту и запуск в одну строку. Ну почти в одну)
В вашем примере есть
@Inject
GitHub gitHubService;
Тут явно более сложная реализация или даже сказать применение. Может быть ее и удобнее и полезнее было применить в вашем случае
0
Sign up to leave a comment.
Android Volley Loader. Движение в сторону библиотеки