
Alm
28.04.2018
07:26:29
a =((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
b = ((LinearLayoutManager)recyclerView.getLayoutManager()).findLastVisibleItemPosition();
a+b/2
время
видимые элементы делятся на 2 категории: полностью видимые, или частично, если что:)

Павел
28.04.2018
07:28:23

Alm
28.04.2018
07:30:02

Google

Danya
28.04.2018
07:39:46
+++ или да.... с drawables- проблемы (с ресурсами в общем)
Не дойдя до лоадеров в книжке, пока остановился на том, что в пуле потоков параллельно инициализирую асинктаски на загрузку картинок. Все потокобезопасно. Загружаются все вместе мгновенно, теперь непонятно как этого монстра остановить )

Roman
28.04.2018
07:49:35
Всем привет! Кто-нибудь реализовывал или знает как сделать стрелку для табов на мобилке?
https://storage.googleapis.com/material-design/publish/material_v_12/assets/0B6Okdz75tqQsdWNWZFEzRmdWSkk/components-tabs-usage-desktop5.png

Лёша
28.04.2018
07:58:51

Roman
28.04.2018
08:03:41

Alexey
28.04.2018
08:05:48

Vlad
28.04.2018
08:30:17
На рапиду бабки пришли с адмоба. Кинули на конверсии посчитали по курсу 21го числа


Sergey Mitrofanov
28.04.2018
08:33:40
Возник интересный вопрос:
А есть ли в жава метода немедленного автоматического обнуления объекта, если на него не осталось ссылок?
Слабая ссылка не катит, потому что в ней объект живет, пока его ГЦ не соберет. Но его живучесть еще не означает, что он на самом деле используется.
Я помню, в Пикассо используется какая-то техника на блокировке потока. Она такова, что если ты не сохранишь ссылку на Target, то 100% он внутри будет null сразу после выхода из метода. И то же самое будет, как только ты свою ссылку на таргет обнулишь, и других ссылок не останется - он сразу «инавлидируется» обнулением.
Я в свое время не осилил механику той техники, а сейчас найти не могу, где именно это было?
Может кто знает иную технику или про эту может на пальцах раскидать?
Или, может, есть метода учета ссылок на объект?
Да, задача такая - ленивое создание сущности, и обнуление её ссылки в кеше, как только последний использовавший обнулил свою ссылку на неё. Эдакий кастомный скоуп )


Sergey
28.04.2018
08:40:02
Возник интересный вопрос:
А есть ли в жава метода немедленного автоматического обнуления объекта, если на него не осталось ссылок?
Слабая ссылка не катит, потому что в ней объект живет, пока его ГЦ не соберет. Но его живучесть еще не означает, что он на самом деле используется.
Я помню, в Пикассо используется какая-то техника на блокировке потока. Она такова, что если ты не сохранишь ссылку на Target, то 100% он внутри будет null сразу после выхода из метода. И то же самое будет, как только ты свою ссылку на таргет обнулишь, и других ссылок не останется - он сразу «инавлидируется» обнулением.
Я в свое время не осилил механику той техники, а сейчас найти не могу, где именно это было?
Может кто знает иную технику или про эту может на пальцах раскидать?
Или, может, есть метода учета ссылок на объект?
Наверно у меня не хватает знаний, но как только ты все ссылки потерял, тебе уже плевать где объект и когда им займется gc

Quantum Harmonizer
28.04.2018
08:40:44

Sergey
28.04.2018
08:41:36

Quantum Harmonizer
28.04.2018
08:42:10

Sergey
28.04.2018
08:42:46

Google

Quantum Harmonizer
28.04.2018
08:42:53
weak

Sergey Mitrofanov
28.04.2018
08:43:27
Наверно у меня не хватает знаний, но как только ты все ссылки потерял, тебе уже плевать где объект и когда им займется gc
Вот есть кэш, в котором лежит ссылка на объект, и выдает его запрашивающим: если он нулл, то создает, если нет, то выдает.
Так вот задача в том, чтобы обнулять этот объект сразу же, как только все запросившие перестали его использовать (деинициализировались по ЖЦ). Чтобы следующий вопрошающий получил уже новый объект с актуальным состоянием, а не старый.


Quantum Harmonizer
28.04.2018
08:44:20
Вот есть кэш, в котором лежит ссылка на объект, и выдает его запрашивающим: если он нулл, то создает, если нет, то выдает.
Так вот задача в том, чтобы обнулять этот объект сразу же, как только все запросившие перестали его использовать (деинициализировались по ЖЦ). Чтобы следующий вопрошающий получил уже новый объект с актуальным состоянием, а не старый.
если держать не сильную ссылку, а слабую, то об обнулении можно узнать посредством PhantomReference + ReferenceQueue

Sergey
28.04.2018
08:44:32
weak
Окей, я думал кжш в памяти и а софтах лелают

Quantum Harmonizer
28.04.2018
08:45:00


Alexey
28.04.2018
08:45:04
Возник интересный вопрос:
А есть ли в жава метода немедленного автоматического обнуления объекта, если на него не осталось ссылок?
Слабая ссылка не катит, потому что в ней объект живет, пока его ГЦ не соберет. Но его живучесть еще не означает, что он на самом деле используется.
Я помню, в Пикассо используется какая-то техника на блокировке потока. Она такова, что если ты не сохранишь ссылку на Target, то 100% он внутри будет null сразу после выхода из метода. И то же самое будет, как только ты свою ссылку на таргет обнулишь, и других ссылок не останется - он сразу «инавлидируется» обнулением.
Я в свое время не осилил механику той техники, а сейчас найти не могу, где именно это было?
Может кто знает иную технику или про эту может на пальцах раскидать?
Или, может, есть метода учета ссылок на объект?
В пикассо такая шняга:
private static class CleanupThread extends Thread {
private final ReferenceQueue<Object> referenceQueue;
private final Handler handler;
CleanupThread(ReferenceQueue<Object> referenceQueue, Handler handler) {
this.referenceQueue = referenceQueue;
this.handler = handler;
setDaemon(true);
setName(THREAD_PREFIX + "refQueue");
}
@Override public void run() {
Process.setThreadPriority(THREAD_PRIORITY_BACKGROUND);
while (true) {
try {
// Prior to Android 5.0, even when there is no local variable, the result from
// remove() & obtainMessage() is kept as a stack local variable.
// We're forcing this reference to be cleared and replaced by looping every second
// when there is nothing to do.
// This behavior has been tested and reproduced with heap dumps.
RequestWeakReference<?> remove =
(RequestWeakReference<?>) referenceQueue.remove(THREAD_LEAK_CLEANING_MS);
Message message = handler.obtainMessage();
if (remove != null) {
message.what = REQUEST_GCED;
message.obj = remove.action;
handler.sendMessage(message);
} else {
message.recycle();
}
} catch (InterruptedException e) {
break;
} catch (final Exception e) {
handler.post(new Runnable() {
@Override public void run() {
throw new RuntimeException(e);
}
});
break;
}
}
}
void shutdown() {
interrupt();
}
}


Sergey Mitrofanov
28.04.2018
08:45:25
нет, именно Picasso держит Target слабой ссылкой
пруф будет?
Я лично когда тестировал в бою замечал, что weak живет до 5-ти минут, пока его GC не собрал, а Таргет теряется моментально, если ты на него ссылку не сохранил (доли секунд ответа из сети, и NPE по таргету)
И копаясь в недрах пикассо я там не находил weak, а только какую-то магию с блокировкой потока на объекте (не таргет вроде)

Sergey
28.04.2018
08:45:57

Quantum Harmonizer
28.04.2018
08:45:59

Sergey Mitrofanov
28.04.2018
08:46:00


Alexey
28.04.2018
08:46:40
В конструктор потока передается ReferenceQueue, при каждом создании Target помещается в эту очередь, как только ссылка на таргет исчезает - поток отменяет действие
https://docs.oracle.com/javase/7/docs/api/java/lang/ref/ReferenceQueue.html#remove()

Sergey Mitrofanov
28.04.2018
08:48:30
Alexey вот спасибо!
Осталось грокнуть это )

Alexey
28.04.2018
08:50:01
https://github.com/square/picasso/blob/master/picasso/src/main/java/com/squareup/picasso3/Action.java
Да, действие у них - слабая ссылка
а, нет, обосрался)
таргет, все правильно

Quantum Harmonizer
28.04.2018
08:52:40

Alexey
28.04.2018
08:53:22
почему?)
Я начал вспоминать и подумалось что они Action слабой ссылкой делают, потом посмотрел в исходники и оказалось Target, все правильно)

Google

Quantum Harmonizer
28.04.2018
08:56:48
А вот тут подробнее можно? )
Создаётся фантомная или слабая ссылка. В конструктор передаётся ReferenceQueue.
Потом из этой очереди можно будет получать ссылки на объекты, которые стали недостижимыми, и делать какие-то предсмертные действия.

Sergey Mitrofanov
28.04.2018
08:59:42

Quantum Harmonizer
28.04.2018
09:06:10
можно экстендить PhantomReference и добавлять туда своих данных

Sergey Mitrofanov
28.04.2018
09:07:03
@Harmonizr спасибо!
Думал, там еще какая магия есть =)
А weak здесь покатит?

Quantum Harmonizer
28.04.2018
09:07:50

Sergey Mitrofanov
28.04.2018
09:08:01
ok

Anna
28.04.2018
09:25:12
ребята, довольно тупой вопрос, но что-то в рабочую субботу никак не могу сообразить... у меня есть recycler view у каждого item есть одно поле EditText and 2 spinners. Пользователь может интерактивно добавлять и удалять блоки айтемов. по кнопке на интерфейсе нужно забрать актуальные данные с этого списка. я не пойму как нормально это сделать и какие вообще есть варианты %)

Alm
28.04.2018
09:27:21
метод в адаптере написать, который пробигает по всему списку и собирает данные. А в активити обратиться к этому методу

Anna
28.04.2018
09:28:22

Alexandr
28.04.2018
09:53:26

Костя
28.04.2018
09:54:49
по сути да один и тот же список нужно использовать, тот который в адаптере, чтобы при обновлении он понимал что список изменился и обновлял UI

Константин
28.04.2018
09:55:26
Господа, интентом с реквест кодом презентую активити (B) моей второй аппы,через intent передаю data. после работы в (B) делаю
setResult(code,intent)
finish()
в исходной активити в onActivityResult (A) интент зануленый
что делаю не так ?)

Костя
28.04.2018
09:56:14
делаете startActivityForResult ?
и ловить вроде надо резалт в специальном методе на первой активити
как я помню
что делаю не так ?)
http://startandroid.ru/ru/uroki/vse-uroki-spiskom/69-urok-30-podrobnee-pro-onactivityresult-zachem-nuzhny-requestcode-i-resultcode.html
как вариант
onActivityResult() нужно переопределить

Google

Костя
28.04.2018
09:57:47
там ожидать ответ в активити A

Константин
28.04.2018
09:58:05
сорян,не тот интенте обратно прокинул)
спасибо

Anna
28.04.2018
09:58:53

Костя
28.04.2018
09:59:53
и не забывать дергать adapter.notifyDataSetChanged() или ещё красивые калбэки есть у Recycler анимированные
а в чем конкретней вопрос ещё )

Anna
28.04.2018
10:00:49

Костя
28.04.2018
10:01:05
а зачем вам список у фрагмента ?
отдавайте его в адаптер, и например получайте оттуда

Anna
28.04.2018
10:02:54
а зачем вам список у фрагмента ?
на фрагменте я беру этот список и сохраняю в преференсы. это пользовательские настройки. собственно вопроса нет уже, работает нормально. просто обычно я использовала функцию внутри адаптера и интерфейс. во фрагменте или активити её вызывала. а теперь оказывается есть и такой подход...

Костя
28.04.2018
10:10:07
Поэтому я бы делал методы получения списка у адаптера и сохранял

Anna
28.04.2018
10:12:09

Eugeny
28.04.2018
10:14:26
[ не к предыдущей теме] привет всем, кто читает. Может где-то у кого-то в закладках есть пример работы Camera api (или Camera2) положенный на архитектуры MVVM и MVP? Гугл особых результатов не дал, но кто-то точно такое делал

Quantum Harmonizer
28.04.2018
10:14:52

Eugeny
28.04.2018
10:15:26

Quantum Harmonizer
28.04.2018
10:15:54

Eugeny
28.04.2018
10:16:12

Google

Quantum Harmonizer
28.04.2018
10:16:50

Eugeny
28.04.2018
10:17:40

Sergey
28.04.2018
10:30:08

RoGr
28.04.2018
10:39:19
Ребят, есть бд с 6+ таблицами (на 20-30 столбцов)
Мне нужно для каждой таблице сделать вывод на экран всех записей
Как это сделать с точки зрения работы с data слоем
Под каждую таблицу создать модель данных ?
Если делать отдельно модель для каждой таблицы, то получается очень много геттеров - сеттеров и код какой-то очень неуклюжий получается
Возможно я не правильно мысль строю или не понятно описываю проблему

Павел
28.04.2018
11:06:04
кто подскажет,бесконечный recycler как сделать?

Nurgul
28.04.2018
11:06:07
всем привет, как можно вытащить path id of svg при нажатии на этот path?

Quantum Harmonizer
28.04.2018
11:07:12

Alm
28.04.2018
11:07:37

Павел
28.04.2018
11:08:00

Quantum Harmonizer
28.04.2018
11:08:34

Андрей
28.04.2018
11:12:54