Anonymous
Никто не знает что ли?
Anonymous
Ауу
Anonymous
Я знаю через че парсить. Я не знаю как взять data-key
Pavel
Data key это атрибут в чем проблема сделать селектор по аттрибуту
Anonymous
doc.select(div.data-key)?
Konstantin
Anonymous
Почему?
Mike
Почему?
тут про андроид-разработку, а не про парсинг XML
Max
всем привет, подключал кто-нибудь свой ведроид к intellij Idea? может подскажет кто-нибудь, что у меня не так, все дрова, вроде, поставил, компутер видит, режим разработчика стоит, а сама иде не хочет
Max
конечно, в ней и работаю
не было проблем с подключением девайса?
Alexander
Всем привет, тут такая проблема: При использовании retrofit, при запросе по http вылетает onFailure, причем не на всех телефона, вот такой вот Throwable пишет
Alexander
Alexander
в чем может быть проблема и как её устранить?
Алексей
ну нужно добавить разрешение для использования CLEARTEXT
Алексей
там же все написано?
Alexander
это и есть строчка в манифесте: android:usesCleartextTraffic="true"?
Anonymous
Всем привет. Кто нибудь знает как в гредле sourceSet сделать exclude папки, чтобы Котлин не собирал файлы оттуда?
Anonymous
Здравствуйте. Хочу реализовать вход по номеру телефона на Firebase . Там просят хеш сертификата, можно ли получить его где-то ещё кроме cloud platform google ?
Anonymous
Я? ) Это ведь тоже разработка под андроид )
Anonymous
Простите за качество
Простите за качество
На значок вопроса если нажать там должна быть инфа что это такое
nonentity
привет здорова. посоветуйте либу или вообще любую имплементацию для sortable on drag listview. чтобы все дефолтно выглядело и быстро писалось
Mike
привет здорова. посоветуйте либу или вообще любую имплементацию для sortable on drag listview. чтобы все дефолтно выглядело и быстро писалось
проблеме много лет, в интернетах должно быть множество решений. Но вероятнее, что они на RecyclerView.
Anonymous
Там написано что этот хеш можно получить на cloud.google.com , но для регистрации нужна банковская карточка , которой увы нет
nonentity
проблеме много лет, в интернетах должно быть множество решений. Но вероятнее, что они на RecyclerView.
какая-то либа шестилетней давности неприятная и миллионы пустых форков от нее
nonentity
ничего нормального
Mike
ничего нормального
у тебя есть AIMP?
nonentity
ну можно скачать
nonentity
типа опенсорс и взять оттуда?
Mike
типа опенсорс и взять оттуда?
посмотрел, там DragSortListView, Carl Bauer
Там написано что этот хеш можно получить на cloud.google.com , но для регистрации нужна банковская карточка , которой увы нет
Это же обычный sha1 отпечаток у keystore которым ты подписываешь приложение, и в данном случае написано что это необязательно
И если что, инструкции есть как этот отпечаток получить через keytool
nonentity
посмотрел, там DragSortListView, Carl Bauer
та самая древняя библиотека
nonentity
лол
nonentity
но спасибо
Но без него не будет работать вход по номеру телефона
А, ну тогда получи для дебажного ключа этот sha-1
И все
Это не в Гугл клауд
Сыктывкариум
Вопрос в продолжении вчерашней темы про асинхронность. Как я понял, основная проблема асинк-таска в том, что он содержит ссылу на активность и при пересоздании активности получается утечка памяти и неправильная работа. И советуют тут юзать тредпул и екзекуторс. Но если мне надо после выполнения задачи что-то вернуть в активность, то я и так прередам её в создаваемый тред? И если активность пересоздастся, то будет таже самая проблема, что и с асинк-таском. Разве нет?
Сыктывкариум
читай теперь про mvp
Читал. Таже самая проблема. Если активити передаётся для колбэка из потока или презентера - будет та же самая утечка памяти, что и у асинк-таска.
Сыктывкариум
ну как я понимаю.
Sergey F
Читал. Таже самая проблема. Если активити передаётся для колбэка из потока или презентера - будет та же самая утечка памяти, что и у асинк-таска.
у тебя каллбек передается в презентер и все. а дальше говоришь активити вон калбек пришел, обновись
Сыктывкариум
у тебя каллбек передается в презентер и все. а дальше говоришь активити вон калбек пришел, обновись
колбек , как ссылка на активити, передалась в презентер. Потом активити пересоздалась системой. Но в презентере ссылка на старую активити осталась, получается?
Сыктывкариум
Ну да. Но презентер же хранит в себе ссылку на активити?
Сыктывкариум
И при пересоздании активити в презентере будет ссылка на старую активити
Сыктывкариум
Разве что делать презентер синглтоном и при пересоздании активити обновлять ссылку в презентере
Sergey F
Сыктывкариум
А как презентер выживет?
Ну в целом да, он должен быть уничтожен. Но если в нём запущен асинхронно какой-то процесс, и презентер ждё трезультат, то он не будет уничтожен?
Сыктывкариум
и следовательно активити тоже.
Sergey F
или как сделать презентер своими руками
Сыктывкариум
как сделать презентер я знаю. я не совсем понимаю, как оно в дальнейшем будет жить при условиях выполнения долгой задачи в другом потоке
Сыктывкариум
На хабре нашел статью. Там пишут: На основании анализа сложился список требований к решению: 1) View должна привязываться к уже имеющемуся Presenter при смене конфигурации 2) После привязывания View к уже имеющемуся Presenter 3) Presenter должен уметь(при необходимости) жить независимо от того, кто на него подписан или от него отписался
Сыктывкариум
при таком раскладе да, проблемы нет.
Сыктывкариум
Пересоздаётся из-за поворота экрана?
Ну да. МОжет ещё когда-то, но самое частое - поворот экрана
Sergey F
Sergey F
какой ты молодец
Сыктывкариум
просто как бы тут говорили, что асинк-таски это плохо из-за утечек памяти, но получается, что если просто юзать тредпулы или что-либо дргуое, где колбэк будет сам активити - то проблему это не решит.
Сыктывкариум
надо делать презентер, который будет жить и работать независимо от активити
Alexey
Ну да. МОжет ещё когда-то, но самое частое - поворот экрана
Можно вызывать асинк таск во фрагменте с setRetainInstance(true);. Повороты экрана будут корректно обрабатываться и асинк таск подхватываться. public class MyActivity extends Activity { private MyFragment fragment; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... fragment = new MyFragment(); getSupportFragmentManager().beginTransaction() .add(R.id.fragment, fragment) .commit(); } ... } public class MyFragment extends Fragment { private static WeakReference<MyAsyncTask> asyncTaskWeakRef; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); startNewAsyncTask(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ... } private void startNewAsyncTask() { if (!isAsyncTaskPendingOrRunning()) { MyAsyncTask asyncTask = new MyAsyncTask(this); asyncTaskWeakRef = new WeakReference<>(asyncTask); asyncTask.execute(); } } private boolean isAsyncTaskPendingOrRunning() { return asyncTaskWeakRef != null && asyncTaskWeakRef.get() != null && !asyncTaskWeakRef.get().getStatus().equals(AsyncTask.Status.FINISHED); } @Override public void onBackPressed() { if (isAsyncTaskPendingOrRunning()) { asyncTaskWeakRef.get().cancel(true); } } private class MyAsyncTask extends AsyncTask<Void, Void, Void> { private WeakReference<MyFragment> fragmentWeakRef; public AsyncTaskCheckApps(MyFragment fragment) { this.fragmentWeakRef = new WeakReference<>(fragment); } @Override protected Void doInBackground(Void... voids) { ... } @Override protected void onPreExecute() { ... } @Override protected void onPostExecute(Void v) { super.onPostExecute(v); ... } @Override protected void onProgressUpdate(Void... voids) { ... } } }
Ivansuper
И пренебрегали пастбином
Alex
Зато из коробки)
Сыктывкариум
Ну простого способа нет, а асинктаск удобно и легко. Не безопасно, это да.
Nikita
Эфир Ну наконец-то
Max
приложение запускается и сразу же вылетает, в чем причина может быть?
Max
не знал о таком, понял
Max
может ли отсутствие возможности создания папки на устройстве быть причиной того, что приложение не запускается?