Сохранен 535
https://2ch.hk/pr/res/647624.html
Прошлые домены больше не функционируют, используйте адрес ARHIVACH.HK.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Разработка под Android тред №12

 Аноним OP 09/02/16 Втр 04:35:32 #1 №647624 
14549817321910.jpg
Проводим Parse.com в последний путь и все еще ждем релиза второй студии.

Предыдущий тред: https://2ch.hk/pr/res/632324.html

Коротко о главном:
1) Мобильная разработка - это весело.
2) Android Studio & Java - легитимный набор, проверенно временем и поддерживается гуглом. Ждем релиза второй версии студии со всеми плюшками.

А также о неглавном:
3) PhoneGap/Ionic/Titanium/ReactNative - имя им javascript легион, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная, также как и количество вакансий.
4) Xamarin - мультиплатформенная разработка. Попытка серебряной пули на C#. Довольно популярный, и работа есть.
5) RoboVM - идейный наследник ксамарина, а теперь уже и его часть но на Java. Менее популярен, так как моложе, и вакансий я не видел.

Отдельного упоминания стоят:
1) Kotlin - Java от JetBrains, новый и стильный язык, куча синтаксического сахара прилагается, есть стримы и делегаты. Но работы на нее я не видел, и кто захочет поддерживать написанный на котлине код я не знаю.

Где брать инфу:
Интернет-ресурсы
1) http://developer.android.com/index.html
Наша библия. Документация/небольшие примеры/гайды. Но только на инглише, но это плюс. Минус в том, что это все таки документация с небольшими примерами и гайдами и искать там реализацию чего-то хоть немного сложного нету смысла. Раздел Training как раз для старта.
2) http://stackoverflow.com/
Пользуюсь чаще чем первым сайтом. Можно найти практически все.
3) Есть два вполне вменяемых русскоязычных ресурса. Для старта подходят очень даже.
http://startandroid.ru/
и
http://developer.alexanderklimov.ru/android/
Второй еще и условно бесплатный. Главный плюс - это русский язык, простые гайдики, но переводы классов иногда заставляют фейспалмить.
4) http://habrahabr.ru/ - редко но метко, можно найти годные статьи по каким-то реализациям, или переводы с developer.android. Хотя чего тут объяснять.
5) https://www.udacity.com/ - в треде очевидцы говорили что есть годный курс, но я лично не смотрел.

Книги, их никто не читает, но все советуют только одну
1) The Busy Coder’s Guide to Android Development

А теперь, так как заебали уже всех, гайд для:
>"Я хуярил на делфи 5 лет назад а теперь хочу вкатится в андроид":

Чтоб быстро хоть как-то вникнуть в джаву берешь и гуглишь javarush или codingbat.com.
Можно Эккеля "Философия java" почитать.
Или Хорстманн "Java. Библиотека профессионала" до 7 главы.

Что тебе нужно понять в самой жабе.
Энтри лвл.
1) ООП - сам принцип нужно именно понять, так как ооп язык.
2) Типы данных. Примитивы и ссылочные.
3) Структуры данных - Массивы/коллекции - без них никуда. Полезно почитать про алгоритмы работы коллекций и их сложности.
4) Дженерик типы, они как раз юзаются в коллекциях.
5) Классы/интерфейсы и все вытекающие.
Уже можно быдлокодить потихоньку и учить андроид параллельно с тем что ниже.

Дальше
6) Потоки ввода/вывода (streams). Не путать с тредами(threads).
7) Threads, особо не нужно вникать(в java.util.concurrent можно не лезть, в ведре все равно особо не пригодится), но нужно понять как работает многопоточка и что такое Runnable.
8) Прочитать про паттерны что-то. Начать с listener, adapter, singleton, iterator так как на каждом шагу. Ну и по накатанной.
Уже сделаешь что-то нормальное.

Дальше.
9) Работа с Sqlite, нужна будет в любом случае.
10) Работа с json.
Привет клиент-серверка.

Пишите в треде что добавить.
Аноним 09/02/16 Втр 07:25:26 #2 №647640 
И сразу вопрос в новенький тред. Тут точно есть анон, который реализовывал паттерн MVP.
Так вот, допустим, model у нас - какие-то методы стороннего апи, формирующие реквест. Запускаются они из лоадеров/асинктасков. К какому слою ты относишь лоадеры с асинктасками? Их можно определять в своих презентерах - но тогда презентеры будут засраны определениями куч асинктасков и лоадеров.
С другой стороны, в модель их тоже не сунешь, ибо помимо получения данных, в них забита куча логики взаимодействия, в том числе с UI.
Какой стул выбирал ты?
Аноним 09/02/16 Втр 09:06:04 #3 №647650 
>>647640
Да хуй его знает как нужно.
Но всякие ретрофиты и лоадерколбеки(если они работают с юи) пилю в самом презентере, читабельнее и проще работать с юи.
Если уже рассматривать активити/фрагмент как презентер, то мне кажется так правильно. А чистая вью это xml и класс сделанный под него с методом сетдата, иногда удобно, а иногда нахуй не нужно. Так что тоже не понять нужнно оно или нет. Тот же адаптер для листов делают без вьюхи как таковой.
Аноним 09/02/16 Втр 09:13:37 #4 №647652 
>>647640
RxJava (иногда Retrofit), это потому что мне нужно как можно больше кода шарить между Android/iOS
Экспорт картинок в Галерею Аноним 09/02/16 Втр 09:14:49 #5 №647653 
Народ как вы "экспортируете" картинки в галлерею пользователя?
Желательно чтобы на новых девайсах НЕ запрашивать пермишен "write_external_storage".
Kotlin Аноним 09/02/16 Втр 10:13:53 #6 №647665 
14550020336020.png
14550020336031.png
14550020336042.png
освятил Kotlin - язык 2011 года разработки, 100% совместимый (в обе стороны) с Java
Разработчики: JetBrains (создатели IDEA, на базе которой сделана Android Studio)
Полная поддержка в: Android Studio / IDEA / RoboVM Studio / Eclipse / Gradle / Maven
Сайт: https://kotlinlang.org , http://try.kotlinlang.org

Вот видео (на русском) про язык, от главного разработчика:
https://www.youtube.com/watch?v=wjkaPXT_vY4
https://www.youtube.com/watch?v=9x6utkLDBs8
https://www.youtube.com/watch?v=VU_L2_XGQ9s
https://www.youtube.com/watch?v=018n0aXiljc

https://www.youtube.com/watch?v=mTr8TWj9MUU
https://www.youtube.com/watch?v=-BvN0X5tqjw

Из коробки поддерживает:
• Проперти. Также ко всем Java set/get методам можно обращаться как к свойствам;
• Лямбды. Вызываются они в виде lamba1(...), а не как "функциональный интерфейс" lambda1.call(...).
В Java методы (где требуются ФИ) можно передавать новые лямбды;
• Экстеншен методы (как в C#).
К любому (даже final) классу можно добавлять сторонние методы которые будут доступны через точку;
• Перегрузку операторов (+,- и т). К примеру можно два BigDecimal складывать через +, а не метод add(...);
• Неизменяемые коллекции и объекты на уровне компилятора;
• Non-nullable типы, те прощай NullPointerException;
• В нем НЕТ checked исключений (как они всех заебывают внутри лямбд);
В общем похож на scale, но проще и всего +400kb к размеру APK (с proguard будет меньше);
Текущая версия: RC 1

RoboVM + Kotlin - отличная замена Xamarin (C# 2001 года уж смотрится архаично по сравнению с Kotlin)
Аноним 09/02/16 Втр 10:45:56 #7 №647687 
>>647653
Вроде без запроса пермишен нельзя
Аноним 09/02/16 Втр 11:01:08 #8 №647702 
>>647665
С третьего скрина всегда проигрывают, кодогенерация бля.

А вот если бы ты привёл пример на джава для второго что скрина было бы годно
Аноним 09/02/16 Втр 11:06:22 #9 №647707 
>>647687
Самый простой это бросить картинку в свою папку (/Android/data/.../) на карте памяти.
Android все равно сканирует все папки на наличие картинок, но как-то это не очень.
Аноним 09/02/16 Втр 11:46:33 #10 №647732 
>>647665
А есть какая-то бесплатная версии робовм, хоть покупать, или только первый месяц?
Аноним 09/02/16 Втр 12:20:48 #11 №647762 
>>647732
Есть Intel Multi-OS Engine, вроде бы это тоже самое (Java на iOS)
https://habrahabr.ru/company/intel/blog/266653/

Он сейчас бесплатный, попробуй расскажешь.
Аноним 09/02/16 Втр 12:20:52 #12 №647763 
Андройд-аноны, подскажите мне пару моментов:
1) Какую книгу по джава вы бы рекомендовали для крестоносца? Я вполне неплохо знаю плюсы, решил перекатываться в андройд разработку на джаве и не хотелось бы читать что такое переменная или цикл по 200 страниц.
2) Я так понимаю есть разные версии джавы, какую джаву учить для разработки под андройд? И сильные ли различия между версиями?
3) Я так понял, что сейчас в тренд врывается Андроид студио, но в вакансиях в основном требуется опыт с Эклипс. Хотелось бы привыкать к той ИДЕ, которая используется в большинстве компаний, что вы по этому поводу скажете?
4) Возможно дадите пару советов для нюфани о частых подводных камнях.
Аноним 09/02/16 Втр 13:06:56 #13 №647803 
>>647762
Ох и заебали клепать эту кроссплатформу.
Аноним 09/02/16 Втр 13:10:58 #14 №647809 
>>647763
>1) Какую книгу по джава вы бы рекомендовали для крестоносца? Я вполне неплохо знаю плюсы, решил перекатываться в андройд разработку на джаве и не хотелось бы читать что такое переменная или цикл по 200 страниц.
Извини, книг для перехода с крестов не завезли.
Читай любую блять, сам поищи, в шапке все есть, в любом случае обучение с нуля включает в себя повторение материала, а джава си подобный язык и проблем не будет. Перелистывай.
>2) Я так понимаю есть разные версии джавы, какую джаву учить для разработки под андройд? И сильные ли различия между версиями?
Java SE и Java EE, нам нужна первая.
>3) Я так понял, что сейчас в тренд врывается Андроид студио, но в вакансиях в основном требуется опыт с Эклипс. Хотелось бы привыкать к той ИДЕ, которая используется в большинстве компаний, что вы по этому поводу скажете?
Я не представляю какой долбоеб будет писать на эклипсе если есть студия, и если долбобы на эклипсе юзали градл, то и на студии все ок настроится.
>4) Возможно дадите пару советов для нюфани о частых подводных камнях.
Сам то понял что спросил? Андроид сдк громадный фреймворк, там везде свои баги и особенности.
А вообще готовься к постоянным багам.
Аноним 09/02/16 Втр 15:47:33 #15 №648009 
Как загрузить картинку из интернета и передать ее в ImageView ? Если можно ссылку или рабочий пример кода
Аноним 09/02/16 Втр 15:50:00 #16 №648011 
>>647809
Спасибо за ответы.

>Сам то понял что спросил?

Да, я спросил о подводных камнях, которые часто встречаются и являются частой проблемой в этой области. Например нубам в плюсах я бы советовал основательно разобраться с механикой выделения памяти (стек, куча) и арифметике указателей, потому что большинство проблем растёт отсюда. Вот, я думаю в каждой области есть что-то такое, поэтому и спрашиваю, алсо если на этот вопрос тебе нечего сказать, то просто проигнорируй его, очевидно же.

>Я не представляю какой долбоеб будет писать на эклипсе если есть студия

Понятно, значит студия куда удобнее, я так и предполагал. Но ты не знаешь почему в большинстве вакансий указан именно эклипс?
Аноним 09/02/16 Втр 16:09:33 #17 №648028 
>>648011
> Понятно, значит студия куда удобнее, я так и предполагал. Но ты не знаешь почему в большинстве вакансий указан именно эклипс?

Eclipse раньше был единственной IDE, а уже потом вышел Android Studio, но многие работодатели ещё видимо считают Eclipse удобной IDE. Я думаю поэтому большинство вакансий требуют знаний Eclipse (хотя там не сильно сложнее).
Аноним 09/02/16 Втр 16:10:56 #18 №648031 
>>648028
Понятно, значит буду использовать Андроид студию, спасибо.
Аноним 09/02/16 Втр 16:12:42 #19 №648035 
>>648031
Если что потом в Eclipse быстро разберешься.
Аноним 09/02/16 Втр 16:17:11 #20 №648042 
Сосаны, что за хрень с гугловскими сервисами, на одном девайсе sign-in работает нормально, на двух других с тем же аккаунтом и тем же апк не работает и выдает ошибку конфигурации.
Аноним 09/02/16 Втр 17:39:37 #21 №648156 
14550287775600.jpg
Сап, дройданы!
Есть желание запустить WebSocket сервер на своем дрой-девайсе.
С самим сервером проблем нет. Он запускается в отдельном треде и отвечает эхом, если запросить. Проблема появляется, если я пытаюсь отправить со своей активити сообщение всем подключенным клиентам. При прямом обращении в WsHandler (объект для обработки подключений) из своего главного потока приложение крашится с "NetworkOnMainThreadException". Но это я еще понимаю. Но когда я пытаюсь это сделать через Handler, получается та же хуйня. Но для чего тогда нужны Handlerы? Но вообще, меня больше интересует как общаться с другим тредом из UI thread без его блокировки.
Или можт у кого есть пример рабочего WebSocket сервера на под ондройд через сервис например.
Аноним 09/02/16 Втр 17:40:59 #22 №648157 
код активити из которой нужно взаимодействовать с сервером
[code]package ru.govno6.tenchanski;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends Activity implements View.OnClickListener{
TenchApp tA;
Messenger mService = null;
boolean mBound;
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {

mService = new Messenger(service);
mBound = true;
}
public void onServiceDisconnected(ComponentName className) {
mService = null;
mBound = false;
}
};

int team;
String actor;

Button p11btn;
Button p12btn;
Button p21btn;
Button p22btn;
TextView team1ScoreView;
TextView team2ScoreView;

View.OnClickListener pointListener;
ArrayList<tennisPoint> TeamsPoints = new ArrayList();
String[] scores = {"00", "15", "30", "40", "A"};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tA = (TenchApp)getApplicationContext();

pointListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String action = String.valueOf(((Button)findViewById(v.getId())).getText());
switch (v.getId()) {

case R.id.noFeeding:
collectPoints(true, action);
break;

case R.id.out:
collectPoints(true, action);
break;

case R.id.net:
collectPoints(true, action);
break;

case R.id.getPoint:
collectPoints(false, action);
break;

default:
break;
}
}
};

Intent incomingIntent = getIntent();

p11btn = (Button)findViewById(R.id.player11);
p12btn = (Button)findViewById(R.id.player12);
p21btn = (Button)findViewById(R.id.player21);
p22btn = (Button)findViewById(R.id.player22);

p11btn.setText(incomingIntent.getStringExtra("p11"));
p12btn.setText(incomingIntent.getStringExtra("p12"));
p21btn.setText(incomingIntent.getStringExtra("p21"));
p22btn.setText(incomingIntent.getStringExtra("p22"));

p11btn.setOnClickListener(this);
p12btn.setOnClickListener(this);
p21btn.setOnClickListener(this);
p22btn.setOnClickListener(this);

team1ScoreView = (TextView)findViewById(R.id.team1Score);
team2ScoreView = (TextView)findViewById(R.id.team2Score);

Button noFeeding = (Button)findViewById(R.id.noFeeding);
noFeeding.setOnClickListener(pointListener);
Button out = (Button)findViewById(R.id.out);
out.setOnClickListener(pointListener);
Button net = (Button)findViewById(R.id.net);
net.setOnClickListener(pointListener);
Button getPoint = (Button)findViewById(R.id.getPoint);
getPoint.setOnClickListener(pointListener);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}

@Override
public void onClick(View v) {
String player = String.valueOf(((Button)findViewById(v.getId())).getText());
int team = 0;
switch (v.getId()) {

case R.id.player11:
team = 1;
break;

case R.id.player12:
team = 1;
break;

case R.id.player21:
team = 2;
break;

case R.id.player22:
team = 2;
break;

default:
break;
}
Log.d("Tenchanski", player);
//collectPoints(team, player);
this.team = team;
this.actor = player;
}
public void collectPoints(boolean owner, String action){
if(owner){
if(team == 1){
TeamsPoints.add(new tennisPoint(this.actor, action, 2));
}else{
TeamsPoints.add(new tennisPoint(this.actor, action, 1));
}
} else TeamsPoints.add(new tennisPoint(this.actor, action, this.team));
updateInterface();
}

public void updateInterface(){
int team1Score = 0;
int team2Score = 0;
int curTeam = 1;
String team1ScoreStr = "ZZ";
String team2ScoreStr = "ZZ";

for (tennisPoint point : TeamsPoints) {
curTeam = point.getTeam();
if(curTeam == 1) team1Score++;
else team2Score++;
}

if(team1Score < 4 ) {
team1ScoreStr = scores[team1Score];
}
if(team2Score < 4 ) {
team2ScoreStr = scores[team2Score];
}
int delta = Math.abs(team1Score-team2Score);

if(team1Score < 4 ) {
team1ScoreStr = scores[team1Score];
}
if(team2Score < 4 ) {
team2ScoreStr = scores[team2Score];
}

if(team1Score >= 4 || team2Score >= 4){
if (delta>1) {
if (team1Score>team2Score){
team1ScoreStr = "Win";
team2ScoreStr = "LOSS";
}else {
team1ScoreStr = "LOSS";
team2ScoreStr = "WIN";
}
}else{
if (team1Score>team2Score){
team1ScoreStr = "A";
if(team2Score>3) team2ScoreStr = "40";
}else {
if(team1Score>3) team1ScoreStr = "40";
team2ScoreStr = "A";
}
}
if(delta == 0){
team1ScoreStr = "40";
team2ScoreStr = "40";
}
}
team1ScoreView.setText(team1ScoreStr);
team2ScoreView.setText(team2ScoreStr);
try {
//Message m = tA.gettService().getHandler().obtainMessage(1,"{ sjhfsdjfhksjdhf }");
//tA.gettService().getHandler().sendMessage(m);
tA.gettService().getHandler().sendEmptyMessage(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}[/code]
Аноним 09/02/16 Втр 17:41:43 #23 №648159 
класс треда сервера

package ru.govno6.tenchanski;

import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;

import org.eclipse.jetty.server.Server;

import java.util.concurrent.CountDownLatch;

/
Created by Kandid on 29.01.2016.
/
public class TennisNetThread extends Thread {
private Server tenchServer;
private WsHandler wsh;

private Handler handler;

public TennisNetThread() {
super();
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
wsh.sendBroadcastMessage("{ sdsdfsdf }");
//wsh.sendBroadcastMessage((String)msg.obj);
}
};
}

@Override
public void run() {
super.run();
//TenchApp tA = (TenchApp)getApplicationContext();
tenchServer = new Server(8088);
this.wsh = new WsHandler();
tenchServer.setHandler(wsh);
try {
tenchServer.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public Handler getHandler() throws InterruptedException {
return handler;
}
public WsHandler getWsh(){
return this.wsh;
}
public void sendMsg(String msg){
wsh.sendBroadcastMessage(msg);
}
}
Аноним 09/02/16 Втр 17:52:45 #24 №648174 
>>648156
для чего тогда нужны Handlerы?
Handler'ы нужны что-бы последовательно обрабатывать очередь команд.
Примерно как Executor'ы, только они не создают новые потоки, а используют текущий.

> как общаться с другим тредом из UI
Можно через Handler, фоновую работу при этом делай в HandlerThread.
HandlerThread - он как обычный тред + имет свой хендлер.
Аноним 09/02/16 Втр 17:54:22 #25 №648179 
>>648157 >>648159
Иди как ты нахер pasterbin/ideone, это даже смотреть не буду
Аноним 09/02/16 Втр 19:05:00 #26 №648276 
Как свапом удалять элемент из ресайклвью? Делаю notifyItemRemoved(position). Но крашится с ava.lang.IndexOutOfBoundsException: Invalid index, что делать?
Аноним 09/02/16 Втр 19:21:36 #27 №648291 
>>647665
Что там с производительностью по сравнению с джавой?
У меня часть ЦОСа на джве написано и пока нормально крутится.
Аноним 09/02/16 Втр 19:48:52 #28 №648335 
>>648291
http://www.youtube.com/watch?v=v6T20A3b6qw
Вот чувак из JetBrains раскатывает про их новую IDE (для C#) Rider.
Так вот, они ее пишут на Kotlin.
Аноним 09/02/16 Втр 20:42:10 #29 №648403 
>>648291
Да все тоже самое же, байткод тот же самый.
Аноним 09/02/16 Втр 21:02:08 #30 №648415 
>>648403
> байткод тот же самый
> каких-то левых 400КБ сверху
Аноним 09/02/16 Втр 21:06:08 #31 №648420 
>>648415
Ну знаешь в Android нет из коробки методов для работы с коллекциями и тп.
Proguard должен вырезать лишний байт-код.
Аноним 09/02/16 Втр 21:19:14 #32 №648428 
>>648420
java.util.Collections, java.util.Arrays
Они есть, но довольно скудны.
Аноним 09/02/16 Втр 21:22:42 #33 №648431 
>>648428
Куча оберток котлиновских + байткод необходимый для всяких стримов и экстенженов. Чему тут удивляться.
Аноним 09/02/16 Втр 22:16:03 #34 №648504 
>>648428
см первый скрин >>647665

>>648431
> байткод необходимый для всяких стримов и экстенженов
Тебе один хрен пришлось бы создавать те же утилитарные и анонимные классы или писать портянку боейлерплей кода
Аноним 09/02/16 Втр 23:32:00 #35 №648564 
14550499208200.png
Почему этот класс (на пикче) ретурнит null ?
вызываю так:

GetUserByID getUserByID = new GetUserByID();
VKApiUser user =getUserByID.getUser(dialog.message.user_id);

как что б оно возвращало мне норм юзера?
Аноним 09/02/16 Втр 23:33:28 #36 №648567 
>>648564
Потмоу что юзер инициализируется только тогда, когда отработает коллбек. А он не отработал, помести вывод внутрь колбэка.
Аноним 09/02/16 Втр 23:54:13 #37 №648577 
>>648567
что за коллбек ?
Аноним 09/02/16 Втр 23:57:34 #38 №648580 
>>648577
Вот та хуйня которую ты передал в exceuteWithListener
Аноним 10/02/16 Срд 00:03:44 #39 №648585 
14550518242840.png
>>648580
м?
Аноним 10/02/16 Срд 00:30:56 #40 №648595 
14550534570770.jpg
>>648585
Ты откуда к нам такой глупенький?
Запусти эту хуйню. И посмотри на ебаные циферки.
Аноним 10/02/16 Срд 00:43:06 #41 №648599 
>>648595
впервые пробую писать что-то кроме хелоуворда, весь день ебусь, не выспался вот и туплю. Спасибо за пояснения. Добра
Аноним 10/02/16 Срд 00:54:17 #42 №648603 
>>648599
Попробуй прсото пример с тредом(Thread).
new Thread(new Runnable(){try{Thread.sleep(1000L);}finally{System.out.println("1000 milliseconds have passed!");}}).start();
Аноним 10/02/16 Срд 01:56:33 #43 №648619 
14550585939880.jpg
Пытаюсь скачивать пикрелейтед, кодирую его в байт массив. Но выпадает OutOfMemoryError, в чем проблема?
Эта же не еба картинка в разрешение 5к, че за хуйня?
Аноним 10/02/16 Срд 07:17:10 #44 №648664 
>>648619
Как ты его качаешь?
Аноним 10/02/16 Срд 07:37:51 #45 №648670 
Поясните, как в студии делать либрари отдельным проектом? Добавление модуля добавляет его в текущий проект, что как-то не особо удобно для реюзабельности.
Аноним 10/02/16 Срд 09:48:11 #46 №648704 
>>648009
http://square.github.io/picasso/

Читаю сейчас за новую систему permissions. Это получается раньше мы просто запрашивали все пермишены при установке и на этом все. А теперь когда доходит до куска кода, для которого нужно разрешение, то тогда выскакивает диалог для юзера и если он его дает, то нам надо запихивать выполняемый код в метод onRequestPermissionsResult? Что-то все так запутанно получается или я не так понял.
Аноним 10/02/16 Срд 09:57:22 #47 №648708 
>>648704
Ну да, это почти как в iOS, только там можно просто колбек (лямбду) подсунуть, а здесь надо метод активити перегрузить.
Аноним 10/02/16 Срд 13:42:39 #48 №648847 
>>648704
Этот диалог не выскакивает сам. Перед каждым вызовом локейшнменеджера например нужно вставлять проверку на пермишн, и если его нет, то самому показывать сообщение и ловить результат в активитирнзульте.
0/10 короч, могли бы диалог блокирующим сделать, что бы не ебаться с лайфсиклами.
Аноним 10/02/16 Срд 14:15:30 #49 №648884 
>>648664
Пикассо
Аноним 10/02/16 Срд 15:46:57 #50 №648974 
>>648847
Если бы его сделали не отдельным активити а фрагментом то наверное легче сломать было бы.
>>648670
Да вот никак, делай новый проект к нему добавляй модуль, не вижу проблемы. Захотел вырезал второй модуль совсем или из settings.gradle, захотел - не выпилил и гоняешь там демо, опять же удобно.
Аноним 10/02/16 Срд 15:47:23 #51 №648975 
>>648884
А если через фреско?
Аноним 10/02/16 Срд 16:26:39 #52 №649014 
>>648884
> Пикассо
Как именно?
Аноним 10/02/16 Срд 16:28:11 #53 №649015 
>>649014
Синхронно
Bitmap image = Picasso.with(getContext()).load(url).get();
Аноним 10/02/16 Срд 16:43:12 #54 №649026 
>>649015
Это не в UI треде?
Аноним 10/02/16 Срд 16:51:55 #55 №649040 
>>649026
ну нет кончено
Аноним 10/02/16 Срд 17:31:03 #56 №649080 
14551146631250.png
>>649015
Нафиг тебе вообще в этом случае пикасо, почему нельзя просто скачать?
Аноним 10/02/16 Срд 17:31:32 #57 №649081 
можно ссылку на какой-нибудь открытый проект в гитхабе, в котороб код был бвы таким, на который можно равняться?
Аноним 10/02/16 Срд 17:39:00 #58 №649084 
>>649080
Опять траллируешь своим котлином?
Но к вопросу присоединяюсь.
Аноним 10/02/16 Срд 17:54:28 #59 №649096 
14551160687200.jpg
14551160687201.jpg
Посоны, никак не пойму как вызвать sendMsg() во втором потоке через Handler
На первом пике место, где я пытюсь выполнить runnable в другом треде, на втором код самого треда. Почему то метод окрашивается в красный, но не подцеркивается и проект при этом не собирается.
Аноним 10/02/16 Срд 18:01:35 #60 №649105 
14551164959800.gif
>>647624 (OP)
В IntelliJ IDEA Community Edition есть возможность программировать под андроид. Нужно ли качать Android Studio, или он теперь то же самое, что IntelliJ IDEA?


В интернете есть старый FAQ на эту тему, но он, скорее всего, устарел. 2013-й год, как-никак.
Аноним 10/02/16 Срд 18:03:05 #61 №649107 
>>649096
Ни чего не понял в твое коде, но попробуй изменить
> private void sendMsg(String msg) ...
на
public void sendMsg(String msg) ...

и если на скринах разные классы, то
> sendMsg(" ... ");
на
tA.gettService().sendMsg(" ... ");
Аноним 10/02/16 Срд 18:23:17 #62 №649129 
>>649105
В коммерческой идее точно можно. Укради идею, будь мужиком!
Аноним 10/02/16 Срд 18:40:44 #63 №649150 
>>649105
Не нужно, все есть и в андройд-плагине
Аноним 10/02/16 Срд 20:37:40 #64 №649401 
Юзаю cupboard и очень рад. Но сука, как красиво сделать выборку для курсора?
Заебал бойлерплейт описаний таблиц потому и взял эту либу, но хардкодить название столбца для выборки, если оно в свою очередь строится по модели класса, полная хуйня же.
Аноним 10/02/16 Срд 20:43:03 #65 №649404 
>>649081
Та все хуярят по своему, нету никакого стандарта по сути.
Опен сорс бляха муха.
Для решения задачи есть минимум 2-3 способа, которые вообще отличаются. Я про либы да.
Вариант хуярить по стандартным гайдам от гугла, но они даже дженерики не юзает там где нужно, так что я им не сильно доверяю.
Аноним 10/02/16 Срд 20:54:08 #66 №649424 
>>649129
Воровать коммерческую идею лично для меня оверкилл. Ещё барахлить что-то будет, ну нафиг.
>>649150
Благодарю. А там в репозитории есть ещё дофига плагинов, находимых по слову Android, какие из них стоит поставить?
Аноним 10/02/16 Срд 21:15:20 #67 №649479 
Такс, котаны.
Хочется попробовать всякую хуйню, которая в тренде, к примеру: retrofit, RxJava
Также Recycler, floating button, toolbar

Подскажите какую-нибудь идею для приложения. Исключительно в учебных целях. Код выложу на github.
Аноним 10/02/16 Срд 21:18:50 #68 №649491 
>>649479
Ах, да, еще интересно Realm попробовать.
Аноним 10/02/16 Срд 21:27:50 #69 №649515 
>>649491
Можешь по реалму спрашивать.
Я здесь наверное единственный, кто им пользуется на постоянной основе.
Аноним 10/02/16 Срд 21:40:54 #70 №649532 
>>649479
сделай прилоежние показа картинок из
fb vk twitter instagram flickr и прочих - заюзаешь recycler и поебешься с api.
Аноним 10/02/16 Срд 21:41:49 #71 №649535 
>>649532
Как к этому прикрутить Realm?
Аноним 10/02/16 Срд 21:42:58 #72 №649540 
>>649535
Кэшируешь все это.
Аноним 10/02/16 Срд 21:43:58 #73 №649543 
>>649535
ой охуенно, пойду попробую ваш реалм
Аноним 10/02/16 Срд 21:46:39 #74 №649549 
>>649540
Хранить пикчи в БД?
Аноним 10/02/16 Срд 21:47:02 #75 №649550 
>>649549
Хранить url, дату и имя постера.
Аноним 10/02/16 Срд 21:47:40 #76 №649553 
>>649515
а как к realm прикрутить AbstractThreadedSyncAdapter или что использовать вместо него?
Аноним 10/02/16 Срд 21:53:26 #77 №649564 
>>649553
Никогда его не юзал. Но судя по всему в onPerformSync делаешь Realm.getDefaultInstance и работаешь с ним.
Аноним 10/02/16 Срд 21:54:26 #78 №649570 
>>649564
а как ты делаешь periodic Sync? Ну или как лучше?
Нужен pereodic + pull to refresh
Аноним 10/02/16 Срд 21:57:30 #79 №649573 
>>649570
Обычным alarmManager'ом с интент сервисом.
Аноним 10/02/16 Срд 22:33:33 #80 №649612 
>>649401
Ну же парни, как лучше выйти из данной ситуации? Заебало писать говно.
Аноним 10/02/16 Срд 22:35:44 #81 №649615 
>>649515
В чем его профиты для начала.
Только честно.
Аноним 10/02/16 Срд 22:42:17 #82 №649620 
>>649615
Автоапдейты "курсоров" и просто объектов без реализации ссаного контент провайдера. Хуяк хуяк и в продакшн.
Из минусов в разы меньшая гибкость, порождающая временами костыли.
Аноним 10/02/16 Срд 22:47:08 #83 №649627 
>>649080
Как тут эксепшн словить?
Аноним 10/02/16 Срд 23:00:02 #84 №649642 
>>649620
Создатель cupboard уже захуярил контент провайдер который из моделей строится. В результате несколько строк и тучи бойлерплейткода нету. Понятно что джоины ты таким образом не сделаешь и тд.
Да и по сути твой подход просто переносит код из контент провайдера в другие классы. Я просто изначально так и хотел делать, но понял что в результате шило на мыло.

Я спрашиваю как при работе с орм или капбоард которая не орм, лучше достать курсор с данными по выборке какой-то. Я понимаю что поле в селекшне должно быть стрингой и от этого не уйдешь, но как сделать чтоб выглядело ровнее? В модельные классы константы с названиями полей затолкать?
Хотя бы будет в одном месте и тд.
Аноним 10/02/16 Срд 23:08:18 #85 №649650 
14551348986650.png
>>649627
try/catch ?
Аноним 10/02/16 Срд 23:13:08 #86 №649659 
>>649650
ясе
Аноним 10/02/16 Срд 23:57:09 #87 №649691 
>>649401
ну вот я щас пишу тоже хуйну такую. И что бы не хардкодить в модельке сделал так:

public static final String IS_RUNNING = "isRunning";
private boolean isRunning;
Аноним 11/02/16 Чтв 00:01:58 #88 №649696 
>>649691
Ну я так и думал в принципе вот тут >>649642
Аноним 11/02/16 Чтв 00:02:55 #89 №649697 
>>649424
В состав коммьюнити эдишн, который ты скачиваешь, все что нужно для андройда уже включено
Аноним 11/02/16 Чтв 00:19:42 #90 №649708 
>>649696
должен быть где-то элегантный солюшн. Пока знаю только что Java не разрешает брать имена полей.
Аноним 11/02/16 Чтв 00:21:51 #91 №649710 
>>649696
http://stackoverflow.com/questions/744226/java-reflection-how-to-get-the-name-of-a-variable
Аноним 11/02/16 Чтв 00:29:40 #92 №649717 
>>649708
Вариант делать так.
В капбоарде допускаются аннотации для названий, потому делаем для каждого поля константу с названием (вынесем все константы названия в класс) дальше будем юзать константу в анотации и при выборке.
В принципе такой вариант еще куда ни шло.
Тебе как?

>>649710
>Джава 8
Спасибо конечно.

Аноним 11/02/16 Чтв 02:02:51 #93 №649752 
Аноны, как правильно работать с реалмом? Делать один инстанс в BaseActivity и везде передавать его? А то я делаю каждый инстанс, когда мне надо что то положить или удалить из бд, и работает это очень странно. Например, удаляю объект в адаптере ресайклвью, потом обновляю данные по всем итемам в своём лоадере и первые пару раз всё работает нормально, но потом появляется тот итем, который я удалил.
Аноним 11/02/16 Чтв 08:39:18 #94 №649800 
>>649752
Написано же прямо на странице. Реалм считает количество полученных реалмов на тред, и если уже есть открытый, то отдает его, вместо того чтобы открывать новый.
Спокойно во всех активити onCreate делаешь getInstance, также как и во фрагментах в onStart. Интсанс реалма будет один. Не забывай их закрывать.
Не нужно их каждый раз открывать и закрывать для совершения транзакции.

> потом обновляю данные по всем итемам в своём лоадере
You doing it wrong.
Если RealmObject или RealmResults были получены в треде с лупером, то они автообновляемые после каждой транзакции, которые их затрагивают, вешаешь на них RealmChangeListener и в нем делаешь либо notifyDataSetChanged либо обновляешь вьюхи обычные.
Если у тебя БД маленькая (до 1000 объектов), спокойно делаешь все запросы в main thread и не ебешь себе мозги асинхронными запросами.
Аноним 11/02/16 Чтв 10:45:26 #95 №649832 
>>649107
Изменил, вылазиет NetworkInMainThread exception.

Вобщем суть проблемы:
Есть активити, есть свой класс наследник Thread. При запуске приложения создается поток на основе его. Как мне из активити метод этого потока в нём же? Там сетевая опрация, и если я пытаюсь сделать
>tA.gettService().sendMsg(" ... ");
то возникает исключение.
Аноним 11/02/16 Чтв 10:47:42 #96 №649834 
>>649832
Класс, который поток не внутренний для активити. Он в отдельном файле.
Аноним 11/02/16 Чтв 11:38:38 #97 №649841 
>>649800
Закрывать надо при уничтожении активити/фрагмента?
Аноним 11/02/16 Чтв 12:10:42 #98 №649858 
14551818428040.png
Антоши, подскажие по архитектурным вопросам: делаю приложение, и многие классы и даже пара активностей используются из другого моего же приложения, которое поддерживается и тоже ещё делается.
Хочется как-то общий контент удобно расположить и использовать, как это сделать, чтобы не копировать ручками туда сюда и не дублировать код?
Аноним 11/02/16 Чтв 12:29:12 #99 №649865 
>>649858
Гугли soliD, Dependecy Inversion и Dependency Injection
Прочитай "чистый код"
Аноним 11/02/16 Чтв 12:59:17 #100 №649881 
>>649841
Да
Аноним 11/02/16 Чтв 14:51:13 #101 №649980 
>>649832
Сам решил.
Короче, если кому интересно, то нужно получить Экземпляр треда, в котором хочется выполнить Runnable через ИмяКлассаТреда.getThread(). И в нем выполнить что угодно.
Аноним 11/02/16 Чтв 15:00:53 #102 №649985 
Есть идеи как юзать эту либу?
https://github.com/ankushsachdeva/emojicon
Или это намек что ее нужно физически себе вставлять в проект?
Аноним 11/02/16 Чтв 15:19:24 #103 №649996 
>>649858
Хочешь в разных проектах использовать код? Сделай aar library. Конечно в идеале загрузить на бинтрей, но вряд ли тебе разрешит работодатель. ну или можешь забить вести на гитхабе и подключать собственно свой аарник оттуда как свободную либо.
Аноним 11/02/16 Чтв 15:21:53 #104 №650000 
>>649996
Склонируй и подключи как модуль.
Аноним 11/02/16 Чтв 15:22:14 #105 №650001 
>>649985
Склонируй и подключи как модуль.
Аноним 11/02/16 Чтв 15:25:21 #106 №650002 
>>650001
>>650000
Охуеть, апдейтить то как?

Аноним 11/02/16 Чтв 15:33:09 #107 №650008 
>>650002
Ну ты можешь держать все модули в одном приложении app, app, my_lib.
Аноним 11/02/16 Чтв 16:04:38 #108 №650048 
>>650008
Так себе удобство.
Аноним 11/02/16 Чтв 16:52:16 #109 №650101 
>>650048
Тогда иди нахуй, неудобно ему, наладь заливку на bintray, далее с центра оттуда тяни зависимости в билде с плюсом вместе версии.
Аноним 11/02/16 Чтв 17:33:03 #110 №650150 
>>650101
Ты видимо не понял что я хочу.
Я нашел проект который в принципе реализовал функционал который мне нужен в либе, но ее нету в бинтрей.
И при обнове либы тем чуваком прийдется перезакачивать модуль себе в апликуху руками.
Я и говорю говно моча это.
Аноним 11/02/16 Чтв 20:29:08 #111 №650312 
>>650150
Прийдется.
Аноним 12/02/16 Птн 11:38:01 #112 №651087 
Эти "от двух лет" в вакансиях меня уже заебали сука.
Словно просят им напиздеть.
Аноним 12/02/16 Птн 11:52:45 #113 №651096 
>>651087
Ты тредом ошибся, тебе сюда >>559423 (OP) >>649937 (OP)
Аноним 12/02/16 Птн 11:55:20 #114 №651097 
>>651096
Та я не хочу это обсуждать, просто заебало немного, словно с моим опытом растет и опыт работы в вакансиях.
Аноним 12/02/16 Птн 11:59:09 #115 №651099 
>>651097
А представь что будет, когда Kotlin в народ пойдет, а в вакансиях будет "от двух лет опыта".
Вот у многих по подгорит. Хотя все честно, он же с 2012 доступен был.
Аноним 12/02/16 Птн 12:07:04 #116 №651110 
>>651099
Это херня. Я просто умираю со смеху когда в вакансии написано "Java/Android опыт год" а потом спрашивают умею ли я в кросплатформу или на обжектив си.
Аноним 12/02/16 Птн 13:02:07 #117 №651164 
Поясните. Гугл советует освобождать все ресурсы, долгие закачки и все прочее в методе onStop(). Но при этом система может убить активити без вызова методов onStop(), onDestroy(). Получается надо все сохранять и заканчивать в методе onPause(), он же 100% вызывается, даже если система убивает сама активити. Или как?
Аноним 12/02/16 Птн 13:07:35 #118 №651167 
>>651164
И ВЫКЛЮЧАЕШЬ ЭКРАН
@
И ОБРУБАЕШЬ ЗАКАЧКУ

Система не убивает отдельные активити, она убивает всё приложение целиком. Я бы вообще в ондестрой ставил, ибо если поставить в онстоп, то ты начнёшь скачку, свернёнь приложение, чтобы чем-то другим заняться -> скачка умрёт.
Аноним 12/02/16 Птн 13:20:59 #119 №651176 
>>651167
скачку вообще надо в сервисе делать
Аноним 12/02/16 Птн 13:32:08 #120 №651183 
>>651176
Хуй знает, вседа делал или в асинктаске, или с помощью сторонних либ, где тоже никаких сервисов не видел.
Аноним 12/02/16 Птн 13:33:55 #121 №651185 
Господа, помогите ньюфагу. Я скачал сорцы андроида по этой инструкции - https://source.android.com/source/downloading.html
Из интереса, посмотреть как все это выглядит. Сам знаю только немного джаву. Насколько я понимаю там все написано на C, C++, Java. Это можно как-то все вместе открыть в какой-нибудь IDE одним проектом, что бы удобно было смотреть что к чему ведет и все такое?
Аноним 12/02/16 Птн 13:34:11 #122 №651186 
>>651164
ОнСтоп всегда вызывается, если это не краш. ОнДестрой в активностях 99%, в фрагментах может проебаться.
Аноним 12/02/16 Птн 13:53:10 #123 №651196 
Сап. Аноны из дс2 нужна ваша помощь. Какие есть фирмы по андройд разработке, в которых принимают на летнюю практику иногородних студентов? Хочу съебаться в Питер на лето
Аноним 12/02/16 Птн 14:43:37 #124 №651237 
>>651185
Не ебим нам мозги открываешь grepcode и смотришь
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/app/ActivityThread.java#ActivityThread
Аноним 12/02/16 Птн 15:12:20 #125 №651259 
>>651183
>>651176
>>651167
Ну я вот сервисом выкрутился, но общался с UI через Broadcast'ы, теперь хочу это сделать через rx как красиво-то? Еще и буфер надо прикрутить к этому.
Аноним 12/02/16 Птн 15:14:52 #126 №651264 
14552792922890.jpg
Пацаны, слышали новость? Яндекс.Карты на андроид ВСЁ.
При конпеляции на targetSdk 23 выдаётся ошибка dlopen failed: /data/app/ru.xxx.yyy-1/lib/arm/libcache.so: has text relocations
В Яндекс докладывали об этой ошибке, но ему похуй.
И если раньше можно было поставить 22й таргет и не ебать мозг, то теперь нельзя, так как гугл банит такие apk в гуглплее. Пруфрилейтед.
Аноним 12/02/16 Птн 15:18:15 #127 №651268 
>>651264
Не понял, сначала был таргет 23, а потом переставил на 22?
Аноним 12/02/16 Птн 15:20:43 #128 №651271 
>>651259
А что там? Я думаю, что если ты будешь качать в асинктаске или даже просто новом треде, общаясь с основным потоком через Message, то система при нехватке памяти сотрёт всё вместе с твоей скачкой. А если, например, поворот экрана, то там может максимум проебаться ссылка на поток загрузки. Для этого presenter слой в MVP придумали, который должен сохранять состояние при повороте. Вот и вся малина. А про rx вообще не знаю ничего, что за зверь и нахуй нужен, сорри.
>>651268
Таргет можно любой поставить при компиляции. Однако Яндекс.Карты не компилируются на 23 таргете из-за ошибки нативной библиотеки, а Гугл Плей не принимает апк, скомпилированные на неактуальном таргете (то есть, не на самом последнем)
Аноним 12/02/16 Птн 15:22:47 #129 №651275 
>>651264
> При конпеляции на targetSdk 23 выдаётся ошибка dlopen failed: /data/app/ru.xxx.yyy-1/lib/arm/libcache.so: has text relocations
Сука, жиза.
Аноним 12/02/16 Птн 15:23:50 #130 №651278 
>>651264
Воу воу воу, у меня три приложения скомпилированы с 23 а таргет на 22, что за хуйня? В пятницу заливал было норм.
Аноним 12/02/16 Птн 15:24:21 #131 №651280 
>>651271
> Однако Яндекс.Карты не компилируются
Компилируются. А вот на устройстве компоновщик уже нахуй пошлёт.
Аноним 12/02/16 Птн 15:24:51 #132 №651282 
>>651271
Вотета прикол.
А на самом деле пиздец гвоноделы.

>>651167
Бля меня это бесит нахуй.
Где прочитать сраную инфу как работает это очищение активити/процесса.
Из твоих слов про процесс, ты должен был понять что при смерти процесса и сервис идет по пиздам.
Аноним 12/02/16 Птн 15:25:35 #133 №651283 
>>651271>>651278
А, я не прав, похоже. В >>651264 пике говорится о даунгрейде таргета апк. Похоже, заливать ещё можно на любом таргете, хоть я и не пытался, не знаю точно.
Аноним 12/02/16 Птн 15:27:18 #134 №651287 
>>651282
Смотри первую лекцию eLegion-школы, которую тут все летом проходили. Процессы с сервисом при освобождении ресурсов уничтожаются в последнюю очередь. Но по пиздам таки идёт сразу весь процесс вместе с сервисами.
Аноним 12/02/16 Птн 15:28:52 #135 №651292 
>>651287
Как тогда пояснить то что иногда активити при беке пересоздается?
Аноним 12/02/16 Птн 15:30:10 #136 №651297 
>>651292
Активити освободило место, в стеке осталось описание, в чем проблема?
Аноним 12/02/16 Птн 15:31:23 #137 №651298 
>>651297
Еще раз.
Что значит активити освободило место?
Аноним 12/02/16 Птн 15:32:44 #138 №651302 
>>651292
При чём пересоздаётся? При возврате вверх по стеку активити? А ты уверен, что это именно возврат у тебя, а не создание нового экземпляра активити? Тащи код, я недавно с похожей проблемой мучался.
Аноним 12/02/16 Птн 15:41:15 #139 №651314 
>>651302
Возврат по стеку бывает только в одном направлении, это так чтоб не путать.
То о чем я говорю легко увидеть.
Запускаем апликуху с тремя активити, заходим последовательно на третью, сворачиваем.
Форсируем либо чистку памяти либо загружаем телефон видеопотоком.
Возвращаемся на приложение. Верхняя активити прогружается быстро. При беке остальные две будут создаватся занового.
Меня вот и смущает этот вопрос. В стеке инфа что там была активити есть, но сам объект активити удален.

Аноним 12/02/16 Птн 15:42:10 #140 №651317 
>>651314
Ну и да, когда первая активити долго грузится, тогда я так понимаю процесс был убит.
Аноним 12/02/16 Птн 15:42:36 #141 №651318 
>>651314
>>651317
Алсо, андроид 4.2.2 чистый нексус гелекси.
Аноним 12/02/16 Птн 15:44:21 #142 №651321 
>>651317>>651318
Ща сам проверю, подожди.
Аноним 12/02/16 Птн 15:50:06 #143 №651329 
>>651321
Ну и вспомни еще про режим "не сохранять активити".
Я не думаю что его специально делали для разработки, скорее просто система подчищает как-то.
Аноним 12/02/16 Птн 16:00:13 #144 №651349 
>>651329
Lenovo P70, KitKat
Эксперимент: три активити, в каждой по эдиттексту и по кнопке перехода в следующую активити.
Ход работы: заходу в первую активити, вбиваю в edittext = "1", захожу во вторую, вбиавю "2", захожу в третью, вбиваю "3". Возвращаюсь через аппаратную кнопку Back назад, до первой, отмечаю, что значения полей сохранились. Иду опть до третьей, восстанавливая значения полей во втором и третьем активити (они были уничтожены при возврате из стека, очевидно). Сворачиваю приложение, запускаю программу "Очистка" (не знаю, какой пакет, не нашёл в списке приложений, думаю, что это неосновная активити с лаунчером какого-то другого системного приложения). Программа отрабатывает, процесс не убивается. Захожу в сохранившийся экземпляр приложения и через аппаратную кнопку возвращаюсь по стеку. Значения EditText сохранились.
Вывод: или ты не прав, или эксперимент неудачен. Скажи свой вариант эксперимента.
Аноним 12/02/16 Птн 16:05:48 #145 №651363 
>>651349
Отпишу через часик, сейчас не могу даже вчитатся.
Аноним 12/02/16 Птн 16:06:55 #146 №651366 
>>651259
Скинь кудани-будь свой код, так сходу не могу посоветовать где тебе rxjava воткнуть.
Аноним 12/02/16 Птн 16:12:07 #147 №651383 
>>651366
А каким образом ты в rx свяжешь сервис и юи?
Мимопроходил. Получится что-то уровня отобас.
Аноним 12/02/16 Птн 16:20:40 #148 №651402 
>>651383
Есть разные подходы, можно через Subject сделать или создать Observable создать через create и с Subscriber работать.

В общем надо увидеть текущий код .
Аноним 12/02/16 Птн 17:47:46 #149 №651501 
Ебать я долбоеб.
Я по старому юзаю холдерпатерн в адаптере в гетВью, а тут оказывается они уже переписали все под ньюВью и БиндВЬю.
Аноним 12/02/16 Птн 18:32:47 #150 №651544 
>>651271
> а Гугл Плей не принимает апк, скомпилированные на неактуальном таргете (то есть, не на самом последнем)
Пиздаболия, недавно выложил targetSdk и compileSdk 22, чтобы не ебаться с пермишинами.
Аноним 12/02/16 Птн 18:35:17 #151 №651545 
>>651501
>2016
>ListView
Аноним 12/02/16 Птн 18:36:55 #152 №651546 
>>651545
Так а хули? Зачем совать ебучий рейсаклвью если он ненужен?
Да и курсорадаптер еще кастомный делать.
Короче на ноль поделил.
Аноним 12/02/16 Птн 18:38:26 #153 №651551 
>>651349
> запускаю программу "Очистка"
Хуйня какая то, включай dont keep activities в developer options.
> Значения EditText сохранились.
Мммм, какой охуенный эксперемент. Значения editText сохраняются в saveInstanceState сами по себе если что.

Давай ты сделаешь так - запомнишь последний введеный текст в локальную переменную активности в onStop, и в onStart будешь ее выводить в текствью. При этом включив нормальный dont keep activities, а не хуй пойми что.
Аноним 12/02/16 Птн 18:42:38 #154 №651555 
>>651551
>Давай ты сделаешь так - запомнишь последний введеный текст в локальную переменную активности в onStop, и в onStart будешь ее выводить в текствью.
Народ такие пиздатые у вас костыли, а просто лог в онкрийте вьебать не судьба?
Аноним 12/02/16 Птн 18:44:40 #155 №651556 
>>651555
Судьба, но так ты смотришь не только в мобилку, но в и лог. Въебать текствью - дело одной минуты.
Аноним 12/02/16 Птн 18:48:22 #156 №651562 
14552921023890.jpg
>>651544
Я уже исправился, гугл не примет апк, если ты заменишь старую апк с 23 таргетом на новую с 22.
>>651551
>Хуйня какая то, включай dont keep activities в developer options.
Чо за хуйня, зачем мне это включать, если это по умолчанию выключено? И на моём Lenovo нет такой опции, пикрилейтед.
>Значения editText сохраняются в saveInstanceState сами по себе если что.
Ага, и где они хранятся, если активити уничтожаются при очистке?
Хотя, конечно, это вероятно, что значения полей сохранятся в сэйвинстансстейт, ща попробую проверить с стринговой переменной активити. Ну и логов поканидаю в онкриэйт-ондестрой.

Аноним 12/02/16 Птн 18:53:27 #157 №651567 
>>651562
Ебать убогие настройки.
Нихуя нету.
>Ага, и где они хранятся, если активити уничтожаются при очистке?
В бандле.
Аноним 12/02/16 Птн 18:54:55 #158 №651569 
>>651567
Понятно, что бандл. Но как происходит соотношение бандла и уничтоженной активити? Одно дело, когда поворот экрана и пересоздание одной активити. Другое дело - уничтожение всего бэкстека.
Аноним 12/02/16 Птн 18:56:13 #159 №651571 
>>651569
Весь стек тоже хранится внезапно в бандле чем-то, где каждому элементу стека назначен свой бандл.
Аноним 12/02/16 Птн 19:10:43 #160 №651582 
>>651546
> 2016
> CursorAdapter, юзать курсоры, делать сырые запросы к sqlite
Ну правда, последний раз такую хуйню делал года два назад.
Аноним 12/02/16 Птн 19:12:03 #161 №651586 
>>651582
А что нового появилось? inb4: ORM
Аноним 12/02/16 Птн 19:12:17 #162 №651587 
>>651562
> Ага, и где они хранятся, если активити уничтожаются при очистке
http://developer.android.com/intl/ru/reference/android/view/View.html#onSaveInstanceState()
Аноним 12/02/16 Птн 19:21:09 #163 №651608 
>>651582
Так а что ты делаешь?
И какие запросы сырые? Я себе капбоард юзаю, а курсор и курсорадаптер годные.
Дай мне аналоги которые решают задачу также хорошо.

>>651586
Да детекчу в нем жирного. Сейчас закукарекает про стримы но долбоебу не понять как работает курсор а как стрим.
Аноним 12/02/16 Птн 19:38:49 #164 №651642 
>>651551
Извини, написал код, но у меня теперь программа очистки обезумела и после очистки убивает вообще все активити, кроме корневой. Например, сделаю три активити, закрою приложение на третьей, а после её работы открывается самая первая, причём с новыми значением. Ну как будто процесс убивается весь. Проверь сам, только давай без своего шайтан-флага? Я не знаю, что за флаг, но раз он по умолчанию не установлен, значит не нужен.
http://pastebin.com/bUY3VxGR
Вот, создай тупо три наследных активити (можно и одну и вызывать самому себя, но тут нужна чистота эксперимента), вызови у них в онкриэйт setTag() и setIntentActivity() и посмотри сам. СтрингБилдер сделал специально, потому что это непримитивный тип, а я не уверен, что объекты примитивных типов не будут сохранться в бандле при пересоздании. Кстати, ща проверю.
Аноним 12/02/16 Птн 19:41:34 #165 №651646 
>>651642
Да, мог бы не пердолиться, примитивы не сохраняются при повороте.
Аноним 12/02/16 Птн 19:52:54 #166 №651665 
14552959744080.png
>>651586 >>651608
Тот же ormlite (фигли он больше не обновляется?) или cupboard / realm.
Это я бы использовал, если обрабатывал большие объемы данных.

> про стримы
Ты не поверишь, сейчас работаю с небольшими данными, которые создает пользователь.
Их я действительно удобно хранить в коллекциях и сериализовать на диск после изменений.
Плюс совмещаю это все с RxJava для асинхронности.

На картинке простенький пример запроса данных с фильтрацией и группировкой.
Очень удобно (компактно и понятно) описывать бизнес-логику на едином языке.
Аноним 12/02/16 Птн 19:56:28 #167 №651674 
>>651665
А объясни ньюфажеку как дела в ORMLite с Loader'ами и асинхронностью? Я не сталкивался с проблемой провисания, но на всякий случай сделал кастомный лоадер для загрузки данных. Или не нужно и оно само едет?
Аноним 12/02/16 Птн 19:57:47 #168 №651678 
>>651665
Сразу говорю, у меня опыта около года. Т.е. ньюфаг по сути.
>cupboard
Я как раз использую капбоард. Он никак не спасает от связывания данных в бд и вьюхи. Для этого юзаю курсор, лоадер, курсорадаптер. Можно тянуть все листом и всем будет похуй, но зачем если есть такой механизм?


>Ты не поверишь, сейчас работаю с небольшими данными, которые создает пользователь.
Поверю, почему нет.
И да с котлином просто божественная работа с коллекциями, но это для мелких данных.

Аноним 12/02/16 Птн 19:58:12 #169 №651680 
>>651674
На сколько я помню в ormlite нет никакой асинхронности.
Так как он возвращает List<T> то его нужно комбинировать с AsyncTaskLoader
Аноним 12/02/16 Птн 19:59:10 #170 №651681 
>>651680
Ну да, я так и сделал.
Аноним 12/02/16 Птн 20:02:44 #171 №651683 
>>651680
А когда с ForeignCollections работаем, то можно делать без асинхронности, уровня

ForeignCollection<MapPoint> points = path.getPoints();
CloseableIterator<MapPoint> iterator = points.closeableIterator();

и потом идти итератором? Я вроде проверил по скорости, работает моментально, но правильно ли это?
Аноним 12/02/16 Птн 20:06:55 #172 №651694 
>>651678
Я бы советовал бы в любом случае запрашивать все данные в фоне за один раз.
Иначе можно нарваться на девайс с хреновой картой памяти и тормозами.

Исключение, когда ты знаешь что все данные просто не поместятся в память
(с учетом того что память еще тратиться на картинки, UI и другую хрень).
Аноним 12/02/16 Птн 20:13:24 #173 №651702 
>>651694
Тут хз.
Если все возводить в абсолют то только через курсоры правильно делать.

А так например есть список друзей, и хуй знает какая у него длина.
Аноним 12/02/16 Птн 20:22:13 #174 №651709 
Ну так что, как все же активити чистятся и почему?
Аноним 12/02/16 Птн 20:25:39 #175 №651712 
>>651709
Я так и не смог воспроизвести случай, чтобы чистился весь бэкстек с сохранением текущей активити. Или уничтожение всего бэкстака, или сохранение всего. Рассматривал случай, когда нет никаких флагов типа синглТаск или прочее. Попробуй потестить сам.
Аноним 12/02/16 Птн 20:30:20 #176 №651722 
>>651712
>>651709
Я не понимаю в чем ваша проблема? Бэкстек сохраняется всегда, если приложение было свернуто, и его процесс убит системой. Можете свернуть сами и убить через студию процесс, а потом развернуть. Весь ваш бэкстек сохранится.
В самом бэкстеке находятся классы активностей и их бандлы.
Аноним 12/02/16 Птн 20:30:25 #177 №651723 
>>651702
Кстати ты вкусе что максимальный размер курсора 1-2 MB и если твои данные превысят этот размер, то курсор начнет прям в главном потоке перегружать себя.
Аноним 12/02/16 Птн 20:37:54 #178 №651734 
>>651722
Я говорил уже.
Переходим по трем активити подряд.
Уходим в бекграунд.
Заставляем каким-то образом андроид чистить память.
Первая активити иногда не пересоздается, но пересоздаются нижние.
Аноним 12/02/16 Птн 20:38:56 #179 №651735 
>>651723
А что ты в него засунешь на 2 мб? Если он по сути не хранит все данные. А дает к ним доступ по типу итератора.
Чтоб было 2мб я даже ебу что нужно сделать.
Аноним 12/02/16 Птн 20:40:52 #180 №651739 
>>651734
Первая тоже пересоздается спокойно.
Аноним 12/02/16 Птн 20:41:59 #181 №651741 
>>651722
Спасибо! Итог теста: бэкстак остался, однако все активити (включая текущую) вызвали onCreate заново.
Вердикт - бэкстек хранится вне процесса, информация об активити хранятся в процессе. Также, savedInstanceState после перезапуска оказался ненулевым для всех трёх активити, что говорит о том, что активити пытается восстановиться из какого-то сохранённого состояния.
>>651734
Ты оказался прав. Но где хранятся этот бэкстек и бандлы?
Аноним 12/02/16 Птн 20:51:11 #182 №651749 
>>651739
>Первая тоже пересоздается спокойно.
Может не заметил потому что первая легковесная была.
Видимо много говна которое я видел связано с несколькими тасками. Вообще мутная хуйня на самом деле.
>>651741
>Ты оказался прав. Но где хранятся этот бэкстек и бандлы?
А хуй его знает. Документация то еще говно.


Аноним 12/02/16 Птн 20:52:34 #183 №651751 
14552995543440.jpg
Программач, разрабатываю в Андроид-студии и не могу понять, как правильно строить иерархию используемых данных.
А именно: что такое "Модуль"? Зачем он нужен? Почему модуль компилируется отдельно и на тестовом устройстве собирается в отдельное приложение? Могу ли я использовать код из одного модуля в другом модуле?

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

Большое спасибо.
Аноним 12/02/16 Птн 20:52:35 #184 №651752 
>>651735
Это я так для расширения кругозора (лично я этого в свое время не знал).
Был у меня смешной случай, когда в курсор надо было запихнуть некоторые юридические документы (на планшете их удобно просматривать целиком, а не постранично).
Аноним 12/02/16 Птн 21:14:26 #185 №651766 
>>651752
Спасибо. Буду знать.


Алсо, нашел баг у чувака в либе, в классе который не зарелизен. Баг немного гадкий, так как не сразу его найдешь.
Вот думаю писать или нет.
Аноним 12/02/16 Птн 21:14:45 #186 №651768 
>>651766
А и кусок кода куда кидать? В пастебин чтоль?
Аноним 12/02/16 Птн 21:24:59 #187 №651773 
Ебать детективы. Вы вообще доки читаете? На диск эти бандлы сериализуются.
Аноним 12/02/16 Птн 21:43:27 #188 №651788 
>>651773
Там в доках двузначность по поводу уничтожения активити и процесса.
Так что нахуй.
Аноним 12/02/16 Птн 21:53:31 #189 №651795 
>>651735
Там кстати еще интересное поведение.
Если ты просто берешь курсор и идешь по нему, то данные грузятся из базы постепенно (каким-то окно, не помню точный размер).

А вот если ты назначишь курсор ListView, то оно вызовет у курсора getCount (это нужно для отображения скролбара).
В этот момент курсора и начнем запрашивать абсолютно все данные, вплоть до 1-2 MB.

Поэтому CursorLoader как-раз и вызывает getCount() у курсора в фоновом потоке.
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/support/v4/content/CursorLoader.java/#52

>>651768
> А и кусок кода куда кидать? В пастебин чтоль?
Извини отвлекся, ты это к чему?
Аноним 12/02/16 Птн 21:59:27 #190 №651806 
14553035677540.jpg
Скажите, почему вы выбрали андроид, а не жава ее? Не тралл, просто думаю, в какую сторону двигаться дальше.
Аноним 12/02/16 Птн 22:06:23 #191 №651811 
>>651795
К этому >>651766
Но уже написал тому чуваку.

>Если ты просто берешь курсор и идешь по нему, то данные грузятся из базы постепенно
Это понятно, собственно вторая причина нужности курсора.
>то оно вызовет у курсора getCount (это нужно для отображения скролбара).
>В этот момент курсора и начнем запрашивать абсолютно все данные, вплоть до 1-2 MB.
Ебать мой хуй.
А я геткаунт для проверок юзал, сука.
Спасибо тут большое.
Такую хуйню нужно красным шрифтом в докуменатции писать. И не проверишь никак ведь, имплементация курсора где-то в жопе.
Покопал глубже, Cursor.moveToFirst() тоже запрашивает каунт.
Да ебись оно все. Наркоманы бля. Кто это говноведро делает? Ебусь называется с оптимизацией, не юзаю коллекции а тут на тебе говном в лицо.
Аноним 13/02/16 Суб 01:20:51 #192 №652009 
>>651806
Мне больше нравится тесное взаимодействие с пользователем, и небольшие проекты. Подводные камни: костыль на костыле при работе с чистым android-фреймворком, низкие потолки зп по сравнению с джавой ее
Аноним 13/02/16 Суб 01:23:43 #193 №652012 
>>652009
>низкие потолки зп по сравнению с джавой ее
Пруфы есть?
Наоборот вижу кучу незакрытых вакансий на ведросениоров, да и зп на уровне с ее.

Да и на ЕЕ ты до потолка будешь намного дольше расти.
Аноним 13/02/16 Суб 03:15:08 #194 №652055 
День добрый, ананасы, поясните нубу пожалуйста.

Хочу вкатиться в разработку под ведроид. На данный момент читаю Шилдта шестое издание по Java 8 (больше половины прошел). Соответственно пишу всякие простые вещи (в основном через консоль), задаю тупые вопросы на стаке.

По окончании книги планирую глянуть вот эту
http://www.ozon.ru/context/detail/id/17562705/
для перехода под ведроид. Годная вещь или что другое стоит посмотреть?

И поясните за всякие сервисы вроде Javarush - стоит ли вообще смотреть в их сторону или там просто выкачка денег за ничто?
Аноним 13/02/16 Суб 04:29:33 #195 №652067 
>>652055
Всегда охуевал с того как читают книги и учатся по ним.
Всякое говно потипу джавараша нужно чтоб привыкнуть к синтаксису, понять хоть что-то и начать быдлокодить.
Параллельно читать книгу и улучшать код.
На джавараше прошел только 15 уроков, но годные первые 10 были. И то для тех кто с нуля.

По ведру книги не читай, сириусли, я даже не представляю что там написали, вся годна инфа по ведру в шапке.
Аноним 13/02/16 Суб 08:15:02 #196 №652089 
>>652055
> Java 8
Мимо
Аноним 13/02/16 Суб 09:16:38 #197 №652114 
>>652067
Инфа по ведру слишком быстро устаревает.
Всякие вещи, типа джавовского ввода-вывода без практики фиг разберешься.
Аноним 13/02/16 Суб 12:10:58 #198 №652179 
>>652114
Ну да, устаревает, но в отличии от всяких ресурсов из оппоста никто нихуя не обновляет.
Особенно книги.
В оп посте есть книга, единственная стоящая.

Ты про потоки ввода вывода? Я по ним лекции смотрел и тебе советую. Книги тоже то еще говно.
Аноним 13/02/16 Суб 15:11:16 #199 №652351 
14553654761910.png
14553654761911.png
Студия в упор не видит образов 15, как починить?
Аноним 13/02/16 Суб 15:19:52 #200 №652366 
>>652351
У меня тоже не видела 9, 10, 11 образы. Забил.
Аноним 13/02/16 Суб 15:28:11 #201 №652382 
>>652366
Ясн, причем если скачать через нее 14 (которого нет в sdk manager'e), то при попытке запуска ругнется мол не назначен ANDROID_SDK_ROOT.
Аноним 13/02/16 Суб 15:29:34 #202 №652386 
>>652382
>>652366
>>652351
Короче запустил avd из консоли, нормально.
Аноним 13/02/16 Суб 15:49:55 #203 №652432 
>>652089
>мимо
Что не так?
Аноним 13/02/16 Суб 15:58:02 #204 №652448 
>>652432
На андроид не завезли.
Аноним 13/02/16 Суб 18:23:54 #205 №652601 
Как динамически обновлять данные в фрагменте по мере их поступления? Например, есть приложение для ВК которое при загрузке фрагмента делает запрос, получает список сообщений и отображает их в фрагменте. Если пользователь напишет мне сообщение, то для того что б его увидеть нужно перезагрузить фрагмент, что б он сделал запрос и отобразил новые сообщения. Как сделать так что б новые сообщения приходили в фрагмент без его перезагрузки?
Аноним 13/02/16 Суб 19:09:55 #206 №652670 
>>652601
Как твоё приложение узнаёт о том, что тебе написали сообщение?
Аноним 13/02/16 Суб 19:19:47 #207 №652685 
>>652670
Сейчас никак не узнает.
отправляет запрос на сервер при onStart(), и получает последние N сообщений.
Аноним 13/02/16 Суб 19:21:13 #208 №652688 
>>652685
Тогда, наверное, никак, только в бэкграундном таске постоянно делать запросы, что будет говном.
Аноним 13/02/16 Суб 19:25:04 #209 №652697 
>>652688
>>652685
Не изобретайте велосипеды. ВК умеет пушить GCM сам.
vk.com/dev/push_settings
Аноним 13/02/16 Суб 19:28:13 #210 №652705 
>>652697
дай хинт как эту хуйню организовать в приложении ?
Аноним 13/02/16 Суб 19:34:52 #211 №652725 
>>652705
https://developers.google.com/cloud-messaging/android/client
Аноним 13/02/16 Суб 19:41:01 #212 №652744 
>>652725
а без гуглплея ВКашечку подписать на пуш?
Аноним 13/02/16 Суб 20:12:17 #213 №652824 
>>652744
Никак. Китаедебилы и носители шапочек из фольги должны страдать.
Ну либо пиши периодичный апдейт пока приложение активно.
Аноним 13/02/16 Суб 20:13:13 #214 №652825 
14553835937620.jpg
У меня в приложении случилась МИСТИКА: курсор упорно тащит значение не из той колонки, которая ему указана, но делает он это только после того, как дропнуть таблицу и создать ее заново и только если запрос указан как SELECT * FROM table_name, если перечислить эти же столбцы, то все работает как следует. Почему так происходит?
Аноним 13/02/16 Суб 21:04:01 #215 №652967 
14553866414290.jpg
Вобщем прохожу курсы, и сейчас вот такое задание:
https://github.com/pardom/ActiveAndroid/wiki/Getting-started
Такой подход и эта ссылка актуальна в данный момент?
Аноним 13/02/16 Суб 21:17:16 #216 №652980 
>>652967
Если учишься, делай как говорят. Всякие котлины, реактивки лучше изучать, когда понимаешь чем плохи стандартные средства.
Аноним 13/02/16 Суб 21:36:14 #217 №652984 
Что-то не выкупаю как прикрутить rx. Вот есть страница логина, раньше по нажатию на кнопку я слал запрос ив колючек отвечал, а с rx как?
1) Получаю Observable от ретрофита, заношу его в синглтон;
2) Подписываю на него retained fragment;
3) Во фрагменте в onPause отписываюсь и опционально убираю его из синглтона;
Все верно?
Аноним 13/02/16 Суб 21:42:34 #218 №652988 
>>652984
Чет жесть какая то. Я бы предпочел учлышать мнение котлиноанона, но вроде как обсервабл нужно делать cache и хранить просто в статик переменной. А на колбэки жизненного цикла вешать subscribe unsubscribe.
Аноним 13/02/16 Суб 21:48:11 #219 №652994 
>>652988
Ну я ток начинаю rx тыкать, да и зачем кешать авторизацию, хз.
Аноним 13/02/16 Суб 21:49:14 #220 №652995 
>>652994
Для onStop onStart обработки. Ты отправил запрос, свернул, запрос вернулся, ты развернул и получил результат сразу.
Аноним 13/02/16 Суб 23:50:16 #221 №653137 
>>652995
Может лучше в onResume() и onPause(), жато хай его нет вдруг еще и не будут вызваны?
Аноним 14/02/16 Вск 02:06:35 #222 №653267 
Антуаны, в чем разница между оракл jdk т openjdk и какую прикрутить к сткдии?(линупс)
Аноним 14/02/16 Вск 08:09:55 #223 №653335 
>>653267
ОраклЖДК пилится ораклом, имеет нешвабодные части. ОпенЖДК - попытка переписать все собственными руками и оупенсорс.
Аноним 14/02/16 Вск 10:29:04 #224 №653383 
Продам пустой аккаунт разработчика за 15$. Регистрировался пару дней назад для так и не вышедшего приложения. Все данные, имейл, имя можно поменять. Желательно Украина.
Аноним 14/02/16 Вск 10:41:30 #225 №653388 
>>647624 (OP)
Добавьте в следующую шапку парашу от Embarcadero(RAD Studio), кроссплатформенная разработка на дельфях.
Аноним 14/02/16 Вск 11:22:30 #226 №653408 
>>653383
Проиграл.
>>653388
Я бы убрал из шапки вообще всю хуйню кроме студии. Нехуй смущать людей кроссплатформопарашей.
Аноним 14/02/16 Вск 13:09:40 #227 №653494 
>>653408
>Я бы убрал из шапки вообще всю хуйню кроме студии. Нехуй смущать людей кроссплатформопарашей.

Да я не против, просто куча ньюфань лезут с ксамаринами своими.
Список по тому что нужно знать в java тоже не от хорошей жизни треда.
мимо-оп
Аноним 14/02/16 Вск 13:56:28 #228 №653559 
>>653494
Куча нуфань лезут с играми, добавь тогда в шапку и вежливый посыл в unity ue треды gd.
Аноним 14/02/16 Вск 17:19:45 #229 №653718 
Зачем в Telegram интерфейс рисуют в Java классе, а не в xml?
Аноним 14/02/16 Вск 18:06:33 #230 №653766 
Готовьтесь к наплыву ньюфагов итт, там по сабжу Head First перевели
Аноним 14/02/16 Вск 19:48:21 #231 №653923 
>>653718
Через рисование на канвасе? Ну должно работать быстрее.
Аноним 14/02/16 Вск 20:52:42 #232 №654047 
Привет, бедолаги!
Какие нынче ограничения на размер apk файла, а то у меня тут образовалась необходимость метров 70 звуков добавить в ассеты приложения. Установится такая ебань, учитывая что через маркет ее распространять ее не буду? Расчитано на 4.1 и выше.
Аноним 14/02/16 Вск 20:58:18 #233 №654054 
>>654047
Установится.
Аноним 14/02/16 Вск 21:09:19 #234 №654069 
>>654047
Не более 100 метров в маркете, но с дополнениями конечно можно больше. Можешь вообще зазипить и распаковать на устройстве.
Аноним 14/02/16 Вск 21:29:50 #235 №654092 
>>654047
Попробуй использовать Opus кодек для звука, жмет офигенно
Аноним 14/02/16 Вск 21:33:24 #236 №654099 
>>654092
> Opus (Android 5.0+)
> Расчитано на 4.1
Охуенный совет, базарю. Хотя можно и попердолиться с сторонними кодеками.
Аноним 14/02/16 Вск 21:36:29 #237 №654107 
>>654099
Уж больно он хорош, что стоит обмазаться JNI
Аноним 15/02/16 Пнд 07:55:38 #238 №654766 
>>654069
А разве апк сами не являются сжатыми архивами?
Аноним 15/02/16 Пнд 08:08:21 #239 №654770 
>>653718
Да ладно, прям вообще везде?
Аноним 15/02/16 Пнд 08:29:50 #240 №654773 
>>654770
Глянь исходники на гитхаб. Там только несколько xml с texview'шками.
Аноним 15/02/16 Пнд 09:14:21 #241 №654782 
14555168613500.png
Аноньчик, подскажи вот что. Я в джаве и андройдоразработке полный нуб и сам по себе не очеь умный, но стоит одна задача. Суть ее в общении Андройда с Пекой по wifi в среде ROS. У этой среды для андройда есть разного рода библиотеки и среды программирования вроде rosjava. Я сейчас объясню на примерах. Собственно, вот он пример, который я успешно запустил и много ума для этого не надо - просто делай то, что сказно в мануалах. http://wiki.ros.org/android/Tutorials/indigo/Installation%20-%20ROS%20Development%20Environment#Interactions_Application Проблема в том, что мне надо переделать код оттуда так, чтобы он вместо условного "hello word" давал пеке, скажем, результат выполнения функции акселерометра с Андройда. Так-то я примерно понимаю, что надо заменить часть кода и функции для датчиков с Андройда гуглятся за 5 сек, но вот как ориентироваться во всех этих библеотеках ROS для АндройдСтудио, чтобы правильно пофиксить код исходников, я не представляю. КАк мне в этом разобраться? С чего начать, чтобы успешно это скомпилировать, залить в Андройд и считать с него датчики?
Аноним 15/02/16 Пнд 09:44:46 #242 №654796 
>>647624 (OP)
>1) The Busy Coder’s Guide to Android Development
3к страниц анон ты охуел
Аноним 15/02/16 Пнд 09:55:44 #243 №654797 
>>654782
ну тебе нужно научится программировать под андроид - ты сам понимаешь что задача не тривиальная и с наскока у тебя не получится. Бери данные с датчиков и отправляй их туда куда отправляешь хеллоу ворлд. как-то так.
Аноним 15/02/16 Пнд 10:00:27 #244 №654802 
анон, подскажи материалы по архитектуре приложений плз
Аноним 15/02/16 Пнд 10:00:48 #245 №654803 
google io не предлагать - там говно нечитаемое блять.
Аноним 15/02/16 Пнд 11:00:44 #246 №654833 
>>654766
Ну я видел статью, где предлагалось сжимать ресурсы дополнительно, хотя может я ошибся и на размер аяк это не повлияет, а повлияет на размер установленной программы, что конечно не то.
Аноним 15/02/16 Пнд 17:57:32 #247 №655143 
Андройдачи, а подскажите такую вещь. Начал тут потихоньку осваиваться в java se и собственно хочу попробовать пописать под андройд. В EE потом перекатиться можно легко или какие то вещи там в принципе по-другому? Понимаю что SE это индивидуальный декстоп, EE это мощные серверные решения - начало на SE может дать какие то побочные эффекты при переходе на EE?

Бля, пока дописал понял насколько абстрактный вопрос задал. Ну хуй с ним. Может ответит кто-то что-то.
Аноним 15/02/16 Пнд 18:36:25 #248 №655186 
>>654802
Гугли mosby, moxy(новая штука, свежая, на хабре есть статья).
Руками делать архитектуру плохая идея.
Аноним 15/02/16 Пнд 18:39:36 #249 №655194 
>>655143
Ничего общего. Став андроид лид архитектом ты в энтерпрайзе все равно с ссаного джуниора начинать будешь.
Аноним 15/02/16 Пнд 18:41:13 #250 №655196 
Взываю к котлинофилу и господам с опытом.

Хочу задать вопрос опытному программисту который кроме ведра еще всякого говна хлебнул.
Поясни за свой опыт и примерный уровень зп от года к году.

Буду рад если расскажешь про опыт на всяких гейосях, что зашло что не очень.
Меня начали тревожить крики что на ЕЕ зарплаты в два раза выше, и на гейосе в полтора-два.
Вспомнив про все костыли и баги самой сдк, меня начинает брать тремор, и не отпускает.

мимо-год-коммерческой-разработки
Аноним 15/02/16 Пнд 19:15:23 #251 №655254 
>>655196
Мне кажется что тебе просто не дают развить свой потенциал если он есть на текущей работе.
Наверное заебало ковырять один и тот-же проект в течение полугода-года, ЗП не поднимают, хочется чего-нибудь нового.

Советую просто сменить место работы. На новом месте с твоим небольшим опытом
будет и ЗП повыше и новые проекты (возможно) снуля разрабатывать будешь.

Про EE я не знаю, никогда мыслей не было уйти в интерпрайз. Пока просто меню место работы.

котлино-анон-1
Аноним 15/02/16 Пнд 19:28:55 #252 №655269 
>>647665
>3 пик
А если я поля класса паблик сделаю?
Аноним 15/02/16 Пнд 19:35:41 #253 №655276 
>>655269
То котлиноеб обосрется, очевидно же.
Аноним 15/02/16 Пнд 19:39:10 #254 №655280 
>>655269
1) как правильно заметили один анон, в любой IDE есть кодогенерация геттеров
2) в своем приложение ты можешь действовать как тебе удобнее,
а вот если будешь делать библиотеку то это уже мувитон.

Это был только один из примеров, на Kotlin можно делать гораздо более увлекательные вещи.
Аноним 15/02/16 Пнд 21:08:57 #255 №655385 
>>647665
>3 пик
Но ведь в джяве есть ломбок, а справа тупая копипаста со скалы, только в скале кейс классы предоставляют экстракторы для паттерн-матчинга, и позволяют автоматически генерировать тайпклассы макросами.
Аноним 15/02/16 Пнд 21:37:03 #256 №655411 
>>655385
> в джяве есть ломбок
А кто нибудь пользуется им при разработке в Android Studio?

> копипаста со скалы
> В общем похож на Scala, но проще и всего +400kb к размеру APK
Я уже говорил что "все современные (мультипарадигмальные, статические) языки очень похожи".
Возьми к примеру Swift, там тоже очень много всего от Kotlin Scala.
Аноним 16/02/16 Втр 03:32:45 #257 №655626 
14555827659990.png
Kotlin неплох, даже не ожидал.
Конечно он обязан быть быдлокодерским, там first-order все, но то, что есть, грамотно сделано. То есть, если scala = kotlin ++ haskell, то kotlin = scala diff haskell. Такая java done less wrong. Гарантированный инлайн, с помощью которого можно создавать легковесные control-flow конструкции понравился.
Kotlin 1.0 Аноним 16/02/16 Втр 07:02:42 #258 №655669 
14555953624870.png
14555953624871.webm
http://blog.jetbrains.com/kotlin/2016/02/kotlin-1-0-released-pragmatic-language-for-jvm-and-android/
Аноним 16/02/16 Втр 10:00:41 #259 №655721 
>>655626
А зачем гарантированный инлайн? Что бы методов было меньше или что?
Аноним 16/02/16 Втр 10:11:18 #260 №655727 
>>655721
Для производительности (в частности экстеншен-методов)
Аноним 16/02/16 Втр 10:32:50 #261 №655746 
>>655626
Ой блядь, языковый сомелье пожаловал.
Аноним 16/02/16 Втр 10:32:59 #262 №655747 
>>655727
Откуда берется выигрышь? Не дрочится стек и не происходит жампов?
Аноним 16/02/16 Втр 11:13:57 #263 №655800 
>>655747
В общем да, еще это оптимизует лямбды (переносит код лямбды прям в вызываемый метод).
Хотя по идее компилятор должен сам инлайнить мелкие методы (HotSpot это точно умеет).

Кстати в Kotlin (в отличие от Java) по умолчанию все методы/классы final.
Соответственно не надо надеятся на компилятор, что он девиртуализирует методы (ART это вообще умеет?).

Так что лично я не пользуюсь явными inline.
Аноним 16/02/16 Втр 11:28:22 #264 №655812 
>>655800
Обычное правило еще из С - то что надо компилятор сам заинлайнит.
Аноним 16/02/16 Втр 13:25:02 #265 №655896 
>>654796

Там основная часть на ~800 страниц. Остальное идет уже как справочник.

Поясните ньюфагу. Наблюдаю уже который тред форс Котлина. На него реально будут переходить с жавы или нет?
Аноним 16/02/16 Втр 13:36:39 #266 №655906 
>>655896
Подожди год, посмотри тенденцию. Взять и перейти мешает только то, что некрасиво писать код который никто не будет поддерживать когда ты съебешь, значит нужна инициатива сверху.
Аноним 16/02/16 Втр 17:38:46 #267 №656237 
Анон, где справочник взять по java на русском, я имею в виду документацию по классам?
Аноним 16/02/16 Втр 19:07:37 #268 №656419 
14556388575860.jpg
спасайте, ананасы. Мне нужн сделать SIP клиент чтоб звонить через свой Asterisk(телефонная станция). Нужно элементарное приложение с одной кнопкой которое при запуске будет регаться на станции и при нажатии на кнопку звонить на определенный номер. Все вроде до пиздеца просто но стандартные методы android.net.sip не работают. Перебрал кучу опенсорс проектов но не все смог запустить в андроид студии и все они работают с нативными либами с которыми я не могу разобраться. Единственное что нормально сбилдилось и запустилось это CSipSimple, но у него очень сложная структура чтоб такой нуб как я смог разобраться. Направте на верный путь двачаны!!!
Аноним 16/02/16 Втр 19:25:15 #269 №656444 
Я сейчас нахуй тут все разнесу.
Ебаные днари с гугла не могли сделать нормальный алгоритм и методы прорисовки блять? Это ж ебучий вздроч нахуй.
Во-первых нихуя попросту нечитабельно, эти статик переменные из пизды чьей-то мамашию. Вы блять посмотрите на сорсы лейаутменеджера для ресайклервью, какой воспаленный мозг это писал?
Во-вторых, невозможно сука просчитать размеры. Вообще нахуй никак. Уебаны еще не сделали колбек на софтКейбоард как этого блять можно было не сделать? Как!?, в результате сиди сука пытайся посчитать несчитыаемые размеры в онМежуре. Как же я охуеваю с этого.
В-третьих, что это за говно ваш релейтивлейаут? Ой мы убрали вложенности, но сука, вы добавили ебучую перерисовку всех чайлдов. Рахиты вы тупорылые.
Гугл иди нахуй блять со своим говноведром.
Аноним 16/02/16 Втр 19:54:15 #270 №656510 
>>656444
Ну так говноид же. Писался индусами за 3 копейки в айосе впрочем не лучше все. Помню пришлось делать кастомные вью для нотификэйшн, это такой пиздец и рефлексия.
Аноним 16/02/16 Втр 20:06:51 #271 №656549 
>>656444 >>656510
Иногда дизайнера надо послать нахуй поставить на место и объяснить что нужно идти на компромисы.
Аноним 16/02/16 Втр 20:59:21 #272 №656657 
>>656444
А чем тебе клавиатура помешала? Пусть перекрывает контент, это вроде как нормальное поведение, не? А иначе если куча полей ввода то пихаешь все в скролл вью.
Аноним 16/02/16 Втр 21:00:34 #273 №656660 
>>656657
Алсо, есть настройка, чтобы клавиатура двигала контент вверх, а не перекрывала.
Аноним 16/02/16 Втр 21:03:19 #274 №656666 
>>656660
Ну тоже нормально, подвинет вверх и все что было снизу - видно, хотя тогда без скрола уже печально.
Аноним 16/02/16 Втр 22:13:32 #275 №656802 
>>656237
Вот скажи мне, программач, и часто к вам с подобными вопросами заходят?
Аноним 16/02/16 Втр 22:14:10 #276 №656803 
>>656419
Моар таких фото.
К сожалению, очень хочу, но не могу помочь. Но бампану твой вопрос и пожелаю еще добра, если доставишь моар
Аноним 16/02/16 Втр 22:23:49 #277 №656820 
>>656549
>>656657
Я пытюсь сделать панель для смайликов, которая будет высотой как клава, короче говоря как в вотсапп или телеграме.
Поблема в том, что делается это все костылями, а я в процессе костылизации.
Аноним 16/02/16 Втр 23:09:29 #278 №656922 
>>656419
Мечтаю о такой тян
\
Аноним 16/02/16 Втр 23:47:04 #279 №657001 
14556556249010.jpg
>>656922
>>656803

Официально вроде бы контент легальный

http://pornolab.net/forum/viewtopic.php?t=1254393

http://web.archive.org/web/20120218182003/http://www.angiecutie.com/

Аноним 17/02/16 Срд 00:07:09 #280 №657034 
>>656444
Андройд - не гугловская разработка изначально, а купленая, поэтому индусский код достался в наследие. Обычно у гугла код все-таки приличный.
Аноним 17/02/16 Срд 00:09:52 #281 №657037 
>>657034
300 строк в констуркторе вью.
Аноним 17/02/16 Срд 00:32:52 #282 №657077 
Сап, аноны, надеюсь что зашёл в правильный тред.
Суть такова: хочу научиться пилить андроид приложения, но при этом и не особо проебать в обычной джаве. Есть выбор из трёх стулов:
1. "Полное руководство по Java" Шилдта;
2. "Head First Java"
3. "Философия Java" Эккеля.
До этого осилил только кресты на уровне хеллоуворлдщика.

Что лучше подойдёт для начала изучения джавы? Или есть ещё какие-то годные варианты, о которых я не знаю?

Хотелось бы как можно скорее перейти к непосредственно разработке под андроид.
Аноним 17/02/16 Срд 00:36:18 #283 №657088 
>>657077
Нужны треды/экхекюторы/коллбэки/http и core, мне кажется эккель, так как:
>1. Head First Java, (2nd Edition) : Kathy Sierra, Bert Bates - для совсем нулячих простым языком.
>2. Core Java (9th edition) : Cay S. Horstmann, Gary Cornell - тоже для нубасов, но на серьёзных щщах.
>3. Thinking in Java (4th Edition): Bruce Eckel - для тех, кто умеет в хеллоуворлд на другом языке.
>4. Effective Java (2nd Edition): Joshua Bloch - для тех, кто знает язык, но хочет перестать писать костыли.
Аноним 17/02/16 Срд 00:41:16 #284 №657099 
>>657088
Cпасибо, бро. Иду скачивать.
Аноним 17/02/16 Срд 04:56:18 #285 №657239 
>>657001
Добра
Аноним 17/02/16 Срд 12:20:22 #286 №657388 
Посыки, объясните мне по понятиям, нахуя нужен Rx.
Аноним 17/02/16 Срд 12:42:17 #287 №657402 
>>657388
Если тебя в андроид sdk все устраивает, то он тебе не нужен.
Аноним 17/02/16 Срд 12:46:08 #288 №657404 
>>657388
Пиздуй гуглить что такой "реактивное программирование" (rxjava просто частная реализация)
Аноним 17/02/16 Срд 14:15:52 #289 №657491 
>>657404
Да мне поебать на реактивное программирование. я не понимаю с хуя ли все хайпят на тему RX сейчас. я по жизни анти хипстер, хочу агрится.
Я привык что Java это ООП мать вашу. Хотите уйти от говнокода какой нибудь блять EventBus в руки и вперед.
Какие нахуй лямбы - ретролямбды, там чё , в oracle и гугле совсем ебанулись а вся индустрия под них подстраивается?
Нахуй яве соревноваться в хипстерстве со скалами и прочим говном, пиздуйте мать вашу на другие JVM языки со своими ебанутыми парадигмами.
Сори накипело бро
Аноним 17/02/16 Срд 14:24:02 #290 №657504 
>>657491
>>657404
Когда я устроюсь на работу и мне скажут: "Ну ёпта у нас тут реактивного говна бывший кодер мудак написал, он очень любил ролики хайповые смотреть от яндекса и гугла (которым просто делать нехуй) и нёс всякую хипстерскую хуйню в проект так как кончал от этого, а вот ты теперь сиди нахуй и дрочи его реактивность, изучи миллион хайповой хуйни что он затащил в проект и сука не выёбывайся! ёпта, ты же JAVA программист нахуй" я тогда пошлю нахуй этот андройд и вашу яву
Аноним 17/02/16 Срд 14:27:12 #291 №657507 
>>657404
быстрей бы ебанный котлин до релиза нормального дошёл и вся ебанная хипстерская шваль съебалась бы туда подальше от берегов православной JAVA
Аноним 17/02/16 Срд 14:30:51 #292 №657510 
>>657404
"ко ко ко у нас данные ёпта , на них надо реактивно реагировать. ко ко ко с этими обсёрверами мы всегда знаем что и на каком шаге где отвалилось. ко ко ко код простой и чистый, RX JAVA FOREVER" - ебучий индикатор индуса быдлокодера, который сука не мог код организовать. сука, убил бы
Аноним 17/02/16 Срд 14:36:28 #293 №657512 
>>657510
>>657507
>>657504
>>657491
Петушня, ты чего разкукарекалась? Никто не будет ничего менять, необучаемое птушное быдло как писало на жабе так и продолжит, а люди ценящие свое время будут делать дела инструментами которые им удобны.
Аноним 17/02/16 Срд 14:39:04 #294 №657515 
>>657504
> Когда я устроюсь на работу
Все с тобой понятно, тебе в ньюфаг-тред, здесь общаются люди уже с опытом
Аноним 17/02/16 Срд 14:52:36 #295 №657521 
>>657515
овер дохуя опыта у меня. я имел в виду след. работу.
>>657512
необучаемое чему? днищенской реактивности и миллионам библиотек различного биндинга? Ты не охуел? Ты хочешь чтобы наш ламповый Android Java мир превратился в подобие JS-ANGULAR-REACT многообразной хуеты, где сука голова идёт кругом от всей хуйни что уже наплели туда. Я вас пидоров хипстерских пиздил и буду пиздить, где бы вы блять не работали. Я приду нахуй и разнесу ваш реактивный код. Я всё верну как раньше
Аноним 17/02/16 Срд 14:59:13 #296 №657527 
>>657521
>идёт кругом от всей хуйни
Ну остается только смириться – ты тупой, если не можешь освоить даже простенькую библиотечку. Для джавы это нормально впрочем. Только вот как ты с таким IQ в интернет смог зайти, ума не приложу.
Аноним 17/02/16 Срд 15:02:42 #297 №657528 
>>657527
Это ты тупой. Сейчас даже мега-тру Senior JS тимлиды охуевают от всех этих велосипедов и "очень нужных и важных" фреймворков в вебе.
Вы такую же хуйню хотите с андройдом сотворить. Нет ёпта, нет ёпта, слышите?
Аноним 17/02/16 Срд 15:07:21 #298 №657530 
>>657527
Вы просто ограниченные уёбки. Неужели вы суки не понимаете что рано или поздно у любой хайповой технологии выйдет %username version 2.0, где всё привычное вам станет легаси и депрекэйтед, и вы будете бесконечно курить свои ебанные мануалы, пытаясь бесконечно обновлять свои ебанные велосипеды.
Хотите в яндексе работать? А там уже вовсю юзают %username version 3.0. Вы что, не в курсе новых технологических подробностей и подводных камней? Идите нахуй, тут есть чел который успел раньше вас прочитать мануалы.

Сука, короче, с ебанутыми нет смысла спорить, только помните, когда пишите , я снесу все ваши велосипеды как только ваши недопроекти
попадут ко мне.
Аноним 17/02/16 Срд 15:09:26 #299 №657532 
>>657528
А если гугол оффициально станет kotlin и rxjava пихать то что тогда делать будешь? И да, где альтернативы? Что делать тем кто не хочет хлебать джавапарашу с колбеками десятеричной вложенности?
Аноним 17/02/16 Срд 15:12:31 #300 №657534 
>>657532
я ж говорил, колбеки десятеричной вложенности идут от кривых рук. может лучше начнем кодить на яве нормально вместо всех этих пилюль? ООП головного мозга никто не отменял
Аноним 17/02/16 Срд 15:12:32 #301 №657535 
>>657521
Все без шуток, объясню для НЕ тролей.

Android "скоро" перейдет на Java 8 и все все равно начнут реактивить через CompletableFuture + ForkJoinPool

А затем когда-нибудь и на Java 9, а там уже из коробки будет своя реализация RX.
Вот чувак из Oracle рассказывает (на 1:35:50) https://www.youtube.com/watch?v=hqR41XVx3kM
Аноним 17/02/16 Срд 15:16:57 #302 №657538 
>>657530
В этом и есть разница между мной и тобой, ты УЧИШЬ фреймворки чтобы можно было НАПИСАТЬ БАЗЗВОРД В РЕЗЮМЕ как тупорылый индус, а я их ИСПОЛЬЗУЮ потому что так мне разрабатывать ЛЕГЧЕ и БЫСТРЕЕ, я вижу где стандартная модель не справляется и пишу элегантный поддерживаемый код. Более того, я искал подобную библиотеку еще когда ни о каком RxJava не было слышно, просто потому что читал пейперы с хаскеллем о FRP и был даже готов самостоятельно написать подобный велосипед.
Аноним 17/02/16 Срд 15:23:44 #303 №657544 
>>657538 >>657535

да я не против, дрочите как хотите, но лучше б вы съебались из явы в какой нибудь котлин-скалу подобную хуету и не мазолили глаза. не трахали бы мозг ораклу на тему нововведений и тому прочее
Аноним 17/02/16 Срд 15:25:35 #304 №657545 
>>657535
oracle ведь под вас, троллей хипстерских прогинается. хуй бы он че делал если бы вы не носились со своим RxJava как угорелые. съебитесь в котлин какой нибудь, умоляю
Аноним 17/02/16 Срд 16:13:48 #305 №657588 
Аноны, че делать? Есть проект, использует яндексовские карты. Погуглил, нашел yandex map kit, но он, вроде как, не будет работать на андроиде 6. Придется использовать гугловские карты? Не будет каких то багов с координатами и всем, что с этим связано?
Аноним 17/02/16 Срд 16:23:00 #306 №657607 
>>657545
Как тебе печет то. Ничего, очень скоро сракель и под массовые аллокации/деаллокации мелких объектов и структурную типизацию жабамашину допилит, чтобы у хипсторов фопэ не тормазило :3
Аноним 17/02/16 Срд 16:25:44 #307 №657619 
>>657607
А разве новый сборщик еще тупит? Я думал он там параллельно туды сюды ебашит.
Аноним 17/02/16 Срд 16:36:02 #308 №657645 
>>657619
Не должен, 1е поколение мусора (порождаемое иммутабельными коллекциями) должно по идее сверхшустро утилизироваться, я так затраллить хотел прост.
Аноним 17/02/16 Срд 16:44:42 #309 №657659 
>>657645
Хотя, возможно, там еще какой-то CoW хитрый нужен унутре жабамашины чтоб данные туда-сюда не копировать, я хуй знает.
Аноним 17/02/16 Срд 16:53:41 #310 №657671 
Эй гуру коллбэков, потоков и прочей хуйни. Вы как-то защищаете айдишники гугла/пейсбука/вкакашки/аналитик/карт в ваших приложениях? Какие подводные камни записывать их для флэворов в BuidlConfig? Всем же на них похуй?
Аноним 17/02/16 Срд 17:16:16 #311 №657694 
>>657671
> . Вы как-то защищаете айдишники гугла/пейсбука/вкакашки/аналитик/карт в ваших приложениях?
Это невозможно, так что нет, не защищаем.
Аноним 17/02/16 Срд 17:18:29 #312 №657695 
>>657694
А как же шифрование последними байтиками картинки anus_negra.png и расшифрование внутри нативного кода?
Аноним 17/02/16 Срд 17:24:17 #313 №657698 
>>657671
Чет не вижу в этом списке ничего секретного. Ты же не зашиваешь в приложения секретные ключи?
Аноним 17/02/16 Срд 17:27:22 #314 №657700 
>>657695
А потом ты это передаёшь в джава код, а я за 3 минуты вытаскиваю его дебаггером.
Ну и банально диасемблировать можно и разобраться, что твоя сошка делает. Это не защита, это просто усложнение. Принципиально невозможным сделать нельзя.
Аноним 17/02/16 Срд 17:37:06 #315 №657708 
>>657698
Нет что ты, это проблемы сервера.
>>657700
Ну да, но это же сложнее?
Аноним 17/02/16 Срд 17:38:43 #316 №657711 
>>657708
> Ну да, но это же сложнее?
И бессмысленнее.
Аноним 17/02/16 Срд 17:42:02 #317 №657715 
>>657711
Короче значит можно взять и поднасрать?
Берем приложуху, выдираем ее google analytics айди. И спамим хуйню?
Аноним 17/02/16 Срд 18:04:54 #318 №657749 
>>657715
пиздец ты мамки хацкер
Аноним 17/02/16 Срд 18:30:11 #319 №657764 
>>657538
Вот тут я не согласен.
В андроиде дело с всякими либами обстоит довольно хуйово, слишком много разных решений.
Код становится нереально поддерживать. Нет, писать с нуля проблем нету, но поддерживать это пиздец.
Посмтрите на ебанутую архитектуру через мортар енд флов, да на ней уже что-то писали в продакшн, но вы блять посмотрите каков пиздец. Никто в своем уме не пойдет на такой проект в поддержку. А нахуй оно надо?

Rx попробую конечно, но я не думаю что в продакшене оно сильно используется, это не ретрофит который обычная обертка.
Аноним 17/02/16 Срд 18:44:14 #320 №657770 
>>657764
А что плохого в mortair? Вполне нормальное решение для отказоустойчивых приложений. И почему не пойдет? У всех что ли такое сильное предубеждение против фреймворков и никто не умеет ни во что кроме сдк? Основная проблема андроид фреймворка в том что универсального метода построения приложения нет. Все эти активити, фрагменты и асинктаски были задуманы чтобы помочь разработчику, но в итоге стали лишь костылями которые приходится обходить. Если бы анроид сдк не был таким уебищным то ничего этого бы не было.
Аноним 17/02/16 Срд 18:44:45 #321 №657771 
>>657764
В курсе что рretrofit поддерживает rx?
Аноним 17/02/16 Срд 18:44:56 #322 №657772 
Я вот читаю код телеграмма и понимаю что это пиздец.
Чувак писавший это аутист? Нет правда.
Переписано тупо все.
Это нормальные разрабы так и пишут что-ли? Я просто смотрю на этот пиздец и понимаю что я не буду так писать, потому что я не хочу задрачивать настолько глубоко каждый сука элемент ведра.
Неужели без всего этого быструю апликуху не написать? Тот же твитер довольно быстрый и уверен написан более адекватным способом.
Аноним 17/02/16 Срд 18:49:13 #323 №657774 
>>657770
Так я и не против мортара и флова, я против того что в одном проекте ты пишешь с ними, а в другом без. Они меняют архитектуру ебучего проекта. В результате на ведре можно реализовать 2 апликухи идентичных по содержанию, но совсем разных внутри.
Это хуйово для андроидрынка, для андроидразрабов.
Уже появляется желание сьебать на какой-нить ксамарин и хуярить под две платформы и не думать какую либу заюзать.

Нет правда такое колчество пиздоты заебало, это как былос материаллибами, пока дезайн от гугла не вышел, наплодилось куча либ, сейчас они нахуй не уперлись.

>>657771
Хуя себе срыв покрово сделал.
Конечно вкурсе блять, нахуй иди. Такие все тут умные, лучше бы помогли мне с клавой разобраться.
Аноним 17/02/16 Срд 18:50:15 #324 №657775 
>>657772
Быструю аппликуху да, написать из стандартных компонентов проблематично. Ты посмотри код активити там, фрагмента в стандартной библиотеке, это такой пиздец, лучше уж действительно все это нахуй переписать. Да все более менее уважающие себя конторы так делают какбы.
Аноним 17/02/16 Срд 18:52:52 #325 №657777 
>>657775
Значит я утону в говне, и весь опыт работы с платформой говно и ненужно.
Аноним 17/02/16 Срд 18:55:11 #326 №657779 
Телеграм лучшее приложение
private final static int chat_enc_timer = 13;
Даже кодконвеншен вертели.
Аноним 17/02/16 Срд 19:06:57 #327 №657788 
>>657774
> на ведре можно реализовать 2 апликухи идентичных по содержанию, но совсем разных внутри
> Это хуйово для андроидрынка, для андроидразрабов
Это же наоборот отлично, такой простор действий для разработчика.
Тем более на мобилках обычно пишут приложения с коротким жизненным циклом (относительно бэкенда)

Просто признайся что ты необучаемый-даун и не хочешь развиваться.

> сьебать на какой-нить ксамарин и хуярить под две платформы и не думать какую либу заюзать
Ой дурак, я пишу на Xamarin уже больше года и там такой-же разброд что и на чисто Android + разное писать обертки под платформенное API
Аноним 17/02/16 Срд 19:18:35 #328 №657791 
>>657788
А вообще есть смысл в этом ксамарине? Можно ли сэкономить на разработке если двух нативных разрабов заменить на одного ксамаринщика?
Аноним 17/02/16 Срд 19:21:52 #329 №657794 
>>657788
Я вижу в тебе долбоеба любителя джаваскриптпараши.
Сейчас не тролю. Я не против чего-то хорошего и признаю что сдк говно, но также утверждаю, что плодящееся количество инструментов которые меняют все начиная от архитектуры - зло. Да и не нужно это.

Вместо того чтоб комьюнити родила что-то годное, каждый сениор видит в себе созидателя и хуярит новый велосипед.

>Просто признайся что ты необучаемый-даун и не хочешь развиваться.
Я в ужасе от количества говна которые должен выучить, я в ужасе от того что целый год хуярив под ведро я сидел в луже неюзабельного людьми говна. А хуже всего что я не знаю что лучше использовать из всего набора и вижу что это никогда не закончится.
Алсо, чато именно в твоих постах котлиноублюдка(котлин норм, но ты какой-то охуевший) вижу всякое говно про необучаемость. Ты правда думаешь если взял Rx под руку и сел за котлин то ты девелопер с большой буквы? Покажи акк с гитхаба, покажи акк с стековерфлов, хоть что-то кроме кусков говноты на котлине. Ты себя послушай, хуйярил он на ксамарине год, теперь на котлине, еще робовм, и у тебя кажись лет 5 опыта? Ну может и правда если просидеть стольков этом говне то уже похуй что там придумывают, если на твоих глазах андроид рос и все давалось порциями, но менее опытным это пиздец, сейчас просто столько ебучего говна на ведро, что уже думаю а не лучше ли энтерпрайз без дроча с кривым интерфейсом, кучей ведрокостылей и еще большей кучей решения их.

>Ой дурак, я пишу на Xamarin уже больше года и там такой-же разброд что и на чисто Android + разное писать обертки под платформенное API
Какой разброд? Тут блять либы для джавы делают, оно на ксамарин даже не дойдет если это не ретрофит(кстате отличный пример библиотеки, как и тимбер собственно) который не юзает только отбитый.

Аноним 17/02/16 Срд 19:35:24 #330 №657803 
>>657791
Если делать на Xamarin.Forms и обмазаться готовыми либами (обертками нативного апи) - то пожалуй можно сэкономить.
Нормально это будет работать только топовых девайсах.
Хуже Xamarin.Forms наверное только js-параша (типа кордовы)
Аноним 17/02/16 Срд 19:40:05 #331 №657806 
>>657794
> не лучше ли энтерпрайз без дроча с кривым интерфейсом
Ну и иди (хватит ныть), будешь писать однотипную крудо-хуйню на твоем любимом Java 1.5
Аноним 17/02/16 Срд 20:36:36 #332 №657850 
>>657806
а приложения мобильные пиздец какие не однотипные... чего стоят 100000 мессенджеров. шёл бы ты нахуй, котлиноублюдок. блядь сука желаю тебе чтобы ты сам превратился в поток данных и съебал в OnError а потом там в аду сгорел
Аноним 17/02/16 Срд 20:43:53 #333 №657853 
>>657806
слишком много маркетинга во всех технологиях к которым прикосается гугл. angular js , rx java, dagger 2, android studio и прочее прочее.
Раскудахтаются, потом дрочеры из яндекса мечтающие "быть на уровне с гуглом" тоже начинают хайпить и кудахтать. Котлин, RX , ко ко ко. Ненавижу их.
Посмотреть на их приложения - какие то ебучие атомизированные сервисы. яндекс погода, яндекс музыка.
Блять НАХУЯ ТУДА ВСЁ ЭТО ДЕРЬМО ТАЩИТЬ?
Че за пиздец им просто делать нехуй, вот они и ходят по своим ебанным конференциям льют в уши это говно. Пиздец выбешивают, просто пиздец.
Аноним 17/02/16 Срд 20:48:57 #334 №657858 
>>657806
К чему я всё это, в связи с вышесказанным неадекват васька из соседнего подъезда который хочет быть таким же крутым как парни из яндекса начинает писать на Rx котлине 2.0 своё ебучее приложение, которое какому - то несчастному человеку потом поддерживать. это несчастному - пиздец. просто из-за вас, петушков кудахтающих
Аноним 17/02/16 Срд 21:00:45 #335 №657867 
>>657858
>>657853
Лучше бы уж котлин с rx мне достался. Я щас занимаюсь поддержкой ебанного ада, в котором половина запросов через @Background AndroidAnnotations, четверть через асинктаски и четверть через лоадеры.

На поддержку может достаться говно независимо от либ, которые в нем используются.
Аноним 17/02/16 Срд 21:12:48 #336 №657879 
>>657867
Чувак мой тебе совет: рефакторинг, маленьким шажками.
Я сам это обожаю, особенно когда приложение покрыто ui-тестами (потому что ui тесты не надо переписывать)
Аноним 17/02/16 Срд 21:44:04 #337 №657911 
>>657879
Котлиноблядь, если проект хуярили таки образом там скорее всего нету тестов
Аноним 18/02/16 Чтв 01:04:28 #338 №658119 
Аноны, есть колапсинг тулбар и в нем текствью, мне надо, чтобы при скролле этот текствью поместился в тайтл тулбара, как это сделать?
Аноним 18/02/16 Чтв 12:44:29 #339 №658285 
Стоит ли перекатываться на котлин?
Аноним 18/02/16 Чтв 13:42:38 #340 №658354 
>>658285
Для себя - да, для работы - нет.
Аноним 18/02/16 Чтв 14:38:14 #341 №658420 
14557954950130.png
>>649697
Да, действительно, всё есть. Нужно просто
создать Application module.
Аноним 18/02/16 Чтв 20:18:27 #342 №658930 
>>657671
> гугла/пейсбука/вкакашки/аналитик/карт
Ко всем запросам подсовывается хэш сертификата, которым подписано приложение. Собрав приложение с этим же ключом, у тебя будет другой хэш, а значит ты соснешь.
Аноним 18/02/16 Чтв 20:26:24 #343 №658940 
как у Picasso с переворачиванием экрана, всё ок или надо в лоадер и синхронно скачивать?
Аноним 18/02/16 Чтв 20:58:35 #344 №658965 
>>658940
Хагрузка отменится. но в кэш будет грузится. Так что если там в кеше есть инфа, то поворот не сломает.
Аноним 18/02/16 Чтв 20:59:13 #345 №658966 
>>658930
Ебать однако, ну я и дурак. А тогда нахрен эти ключи?
Аноним 18/02/16 Чтв 20:59:14 #346 №658967 
>>658940
Да уж лучше заново закачку поставить, чем с лоадером ради ссаной картинки ебаться.
В худшем случае - картинка начинает качаться, вьюха становится недоступна, картинка остается в кэше. При повторном вызове он либо тянет ее из кэша, либо начинает качать заново. В лучшем - имеет карту url - request, и привязывает новую картинку туда.
Аноним 18/02/16 Чтв 21:03:33 #347 №658972 
>>658966
Ключ - идентификатор приложения. Ты можешь подвязать на один и тот же сертификат с пекеджнеймом несколько приложений.
Аноним 18/02/16 Чтв 21:18:00 #348 №658989 
>>658972
Да точно, сказывается работа на аутсорс.
Аноним 19/02/16 Птн 00:08:40 #349 №659153 
>>658967
>чем с лоадером ради ссаной картинки ебаться
Они прямые как двери.
Аноним 19/02/16 Птн 16:18:11 #350 №659533 
Парни, пишу на джавке всякие штуки для себя, думаю попробать в андроиде что-то поделать, тоже для себя.
Лезть в маркет и создавать конкуренцию своим говно-продуктом не хочу, да и далек я ещё до этого.

В общем, есть у мня ифон.
Андроидофона нет, планша тоже нет.

На чём тестировать? На эмуляторе?
Или купить простецкую андроид трубку?
Какую посоветуете для тестинга? (простых приложух, напомню.Уровень ~аппер бегинер
Аноним 19/02/16 Птн 16:25:40 #351 №659538 
>>659533
Купить говнотрубу или эмулятор. Лучше эмулятор, банально быстрее.
Аноним 19/02/16 Птн 16:29:26 #352 №659542 
>>659538
прям совсем говно за 1000-1500 сойдёт?
Аноним 19/02/16 Птн 16:29:45 #353 №659543 
>>659538
прям совсем говно за 1000-1500 сойдёт?
Аноним 19/02/16 Птн 17:49:33 #354 №659623 
>>659533
genymotion
Аноним 19/02/16 Птн 17:49:41 #355 №659624 
>>659533
Используй эмулятор.
Если надумаешь что-то для маркета пилить, то бери nexus 5 / 5x / 6
Аноним 19/02/16 Птн 18:05:55 #356 №659642 
>>659543
>>659542
Да, если на твоем говне за 1,5к заработает, то везде заработает.
Аноним 19/02/16 Птн 20:32:49 #357 №659898 
Как обновлять ListView из Sqlite после завершения Activity? Пробовал передавать адаптеру notifyDataSetChanged, но безрезультатно.
Аноним 19/02/16 Птн 21:27:01 #358 №660071 
>>659898
Че ты там обновлять собрался после завершения активти? После этого никакие вьюхи трогать низя.
Аноним 19/02/16 Птн 21:30:41 #359 №660082 
>>660071
У меня есть два активити на одном есть ListView, а на другом редактирование БД. После выхода из второго активити мне нужно обновить ListView в первом.
Аноним 19/02/16 Птн 21:33:46 #360 №660096 
>>660082
StartActivityForResult
Аноним 19/02/16 Птн 21:35:56 #361 №660110 
>>660096
Как это поможет мне обновить ListView из Базы Данных?
Аноним 19/02/16 Птн 21:36:12 #362 №660111 
>>660096
И, если ты используешь CursorAdapter и производные, то после изменений нужно для адаптера вызвать swapCursor(Cursor c) с обновленным курсором.
Аноним 19/02/16 Птн 21:38:13 #363 №660120 
>>660110
Вызвал ActivityForResult, сделал там все манипуляции с данными и в результате возвращаешь что там тебе надо в адаптер положить и, соответственно, обновляешь адаптер.
У тебя же курсор адаптер?
Аноним 19/02/16 Птн 21:41:11 #364 №660132 
>>660111
>>660120
Спасибо, попробую.
Аноним 20/02/16 Суб 01:16:35 #365 №660642 
Аноны, какой либой вы пользуетесь для реализации pinch zoom'а для картинок? Или сами пишите?
Аноним 20/02/16 Суб 04:30:38 #366 №660735 
14559318386440.jpg
БЛДЖАД КАК МНЕ БОМБИТ

Пытаюсь узнать GPS-координаты пользователя - простая ж вещь - хуй бы там. Вбиваю в гугл запрос, стековерфлоу, копирую код - ДИПРИКЕЙТЕД, ищу дальше - снова ДИПРИКЕЙТЕД. Уже под 30 ссылок и гайдов перебрал - всё старое и нерабочее. У меня у самого всё дипрекейтед от этого говна.

Антоши, как мне просто, блядь, взять и получить ебучие GPS данные?

Аноним 20/02/16 Суб 12:16:54 #367 №660835 
14559598140990.jpg
Обмазался свежим. Все правильно сделал?
Аноним 20/02/16 Суб 13:03:40 #368 №660875 
>>660735
Я хуй знает, что у тебя там деприкейтед, спокойно юзаешь LocationManager.
Аноним 20/02/16 Суб 14:41:40 #369 №660954 
Анон, есть какин-нибудь гайды, книги по охуенному дизайну интерфейса? пилю свои проги для себя, но как же все блядь уебищно выглядит на стандартном интерфейсе, моей кривой композиции и хуевом дизайне, не хотеть такого.
Аноним 20/02/16 Суб 17:18:44 #370 №661086 
>>660954
Гайдлайны материал дезигна
Аноним 20/02/16 Суб 17:41:24 #371 №661108 
14559792841030.webm
Быстро_вопрос: требуется (по вашему опыту) ли уметь программировать iOS, если хочешь работать в мобильной разработке или достаточно знать Android?

По другому вопрос: обязательно ли уметь программировать на обеих платформах, если идешь в мобильную разработку?
Аноним 20/02/16 Суб 18:44:31 #372 №661146 
>>661108
Платформы довольно разные, какие-то общие принципы есть, но стек технологий другой. Если ты не еба тимлидпрожектменажермобильнойразработки то нет смысла.
Аноним 20/02/16 Суб 18:59:13 #373 №661157 
Аноны, как грамотно передать bitmap в другую activity, есть texureView из которого и беру контент, сейчас просто сую ее в static переменную activity, а потом из другого активиту обращаюсь к ней, внгую быдлокод(кокок глобальные переменные). Думал ее сунуть в intent как parseble объект, но на stackoverfolw не советуют, типа расход дополнительной памяти. Наведите на правильный путь господа.
Аноним 20/02/16 Суб 19:03:11 #374 №661163 
>>661157
Какой размер у картинки?
Аноним 20/02/16 Суб 19:05:28 #375 №661165 
>>661157
Лучше сделай с записью в файл.
Аноним 20/02/16 Суб 19:05:34 #376 №661166 
>>661157
Откуда ты ее взял. Если скачал через picasso, просто передай по url, он из кэша выцепит.
Аноним 20/02/16 Суб 19:07:28 #377 №661169 
>>661163
Размер пару мб, предчувствую что напишешь маленький размер, можно и в intent, но допустим что пикча 100мб, как быть?
Аноним 20/02/16 Суб 19:08:39 #378 №661172 
>>661166
>>661165

С превьюхи камеры и сохранять ее не надо(игра пятнашки)
Аноним 20/02/16 Суб 19:08:54 #379 №661173 
>>661169
> 100мб
Хуя ты. Ты такую даже в память без ресайза не загрузишь.
Аноним 20/02/16 Суб 19:11:32 #380 №661175 
>>661172
Я бы в файл писал. Хотя у тебя в любом случае остается из выбора только бандл или файл.
Аноним 20/02/16 Суб 19:14:46 #381 №661178 
>>661175
Тогда в бандл кидану, просто думал есть какой-нибудь хитрый способ.
А зачем в файл сохранять, картинка нарезается и после выхода из прилаги не нужна?
Аноним 20/02/16 Суб 19:15:50 #382 №661181 
>>661169
Писать в файл.
Аноним 20/02/16 Суб 20:56:12 #383 №661283 
Антуаны поделитесь the busy code guide, с меня целая вселенная
Аноним 21/02/16 Вск 13:35:13 #384 №661715 
У меня архитектурный вопрос, всегда ли вы гоняете данные через БД? Ну пилите вы очердную рестопарашу, получили списочек говна. Вы запихиваете это говно в бд и обновляете курсор или же пихаете в память и обновляете arraylist в адаптере, а бд используете только при необходимости оффлайн работы.
Аноним 21/02/16 Вск 13:58:59 #385 №661737 
>>661715
Пишу параллельно три проекта
1) rest клиент (полностью контролирую api) - данные держу временно в памяти
2) приложение где нужен частичный-оффлайн - сериалезую через java-serialize и храню в виде файлов
3) примерно тоже что и (2) только сериализую в json (формально прям то что приходит с сервера сохраняю)

Потому что лень каждый раз писать круд бойлерплейт.
Аноним 21/02/16 Вск 14:06:10 #386 №661745 
>>661737
> 2) приложение где нужен частичный-оффлайн - сериалезую через java-serialize и храню в виде файлов
У меня так друг под иос пишет, благо там не нужно с лайфциклами приложения заморачиваться.

Хотя это все равно какая то дичь, в json файлах данные хранить. Хотя если они неоднородные, то норм.
Аноним 21/02/16 Вск 14:10:34 #387 №661749 
>>661715
Пока больше всего нравится связка
Хттп запрос - бд - лоадер - курсор для вывода.
Если не сохранять в бд, то если запрос не проходит мы сосем хуй и не можем ничего вывести, а я считаю это хуйней.
Также плюс такого подхода в том что все данные что отобразились точно закешированы в бд. И кода там не так и много. Я вон в инете взял обертку на контент провайдер и збс все, теперь пишу его в 3 строчки.

То что этот >>661737 в файлы пихает тоже вроде как допустимо, но нахуя если есть удобный лоадер?
Аноним 21/02/16 Вск 16:40:27 #388 №661912 
>>661749
> Если не сохранять в бд, то если запрос не проходит мы сосем хуй и не можем ничего вывести, а я считаю это хуйней.
Если подменить бд, файлами то ничего не изменится

> нахуя если есть удобный лоадер?
Потому что на ios нет лоадеров, а нужно максимум код защарить.

Аноним 22/02/16 Пнд 01:26:45 #389 №662618 
>>647624 (OP)
Аноны у меня есть свой ViewPager, после токо как я добавил jar в /libs и подключил зависимость, приложение стало крашиться с ClassNotFoundExeption, но когда я заменил на обычный ViewPager всё заработало, как быть?
Аноним 22/02/16 Пнд 03:56:46 #390 №662734 
>>661749
> Я вон в инете взял обертку на контент провайдер

А не поделишься ссылкой? А то меня всегда контент-провайдеры напрягали: слишком много кода писать нужно.
Аноним 22/02/16 Пнд 11:59:36 #391 №662834 
>>662618
Proguard?
Аноним 22/02/16 Пнд 12:57:57 #392 №662881 
Является ли RxLifecycle все таки причиной утечки памяти, т.к. держит ссылку на активность во время ожидания нужного события в compose?
Вот получил я observable от ретрофита, скомпозил с активностью. Начинаю реквест, сворачиваю приложение. Если активность не отмерла, то все просто, в onStart отработает compose и я получу свой результат. А если активность отмерла (включили режим dont keep activities или переключились на другое приложение на каком-нибудь некроговне), то что будет? Я получается вернусь в другую активность и пизда моему запросу?
Как решение делать observable от ретрофита cache, сохранять его в статике в onStop и подписываться обратно в onStart, занулять указатель на статику в onComplete? Тогда нахуй вообще нужен этот RxLifecycle, если мне все равно нужно руками что-то еще делать. Без него выйдет +3 строчки кода на subscribe и mSubscribtion.unsubscribe() в тех же методах жизненного цикла.

Блять, как же я ненавижу эти ссаные лайфциклы, хоть на иос перекатывайся.
Аноним 22/02/16 Пнд 15:12:23 #393 №662955 
>>661283
на рутрекере блять
Аноним 22/02/16 Пнд 15:14:02 #394 №662956 
>>662881
только вкатываюсь в рх и не подскажу. но лайфсайклы это пизда
Аноним 22/02/16 Пнд 15:15:54 #395 №662958 
>>662956
Да тут вопрос к котлин-анону. Судя по всему пока только он rx'ом заморачивается.
Аноним 22/02/16 Пнд 16:00:44 #396 №662986 
>>662834
нет, это в дебаг версии
Аноним 22/02/16 Пнд 16:30:45 #397 №663003 
Посоны, а есть ли какой-то стандартный селектор директории, чтобы юзер текстом путь к папке не вводил? Как называется?
Аноним 22/02/16 Пнд 16:37:28 #398 №663008 
>>663003
> Как называется
github.com/очередная_либа_выбора_папки, дефолтной нет на сколько мне известно.
Аноним 22/02/16 Пнд 16:52:43 #399 №663015 
>>663008
С китката появляется DocumentProvider, через который нужно официально ебашить и получть пермишоны на uri. Только вот беда, в васяно-китайских прошивках их может не быть. И на киткате там апи хуевый.
Аноним 22/02/16 Пнд 18:51:17 #400 №663103 
>>660082
а че с loader 'ом?
Аноним 22/02/16 Пнд 19:02:22 #401 №663113 
>>662986
А где крашистя, в xml?
Аноним 22/02/16 Пнд 20:45:13 #402 №663183 
>>663113
скорее всего объявил неверно в xml layout - e
Аноним 22/02/16 Пнд 20:48:24 #403 №663187 
>>662734
Поделюсь, только я cupboard юзаю.
Гугли cupboard и cupboard-tools
Аноним 22/02/16 Пнд 20:49:25 #404 №663189 
>>661912
>Если подменить бд, файлами то ничего не изменится
Я имею ввиду что сохранять в принципе нужно, а бд сказал по привычке.
>Потому что на ios нет лоадеров, а нужно максимум код защарить.
Извини не понял.
Аноним 22/02/16 Пнд 20:52:19 #405 №663196 
>>663189
> Извини не понял.
Он замариноед.
Аноним 22/02/16 Пнд 20:57:50 #406 №663205 
>>663196
Ну так это не лечится.
Аноним 22/02/16 Пнд 21:32:28 #407 №663278 
Есть searchview и recyclerview, в котором ~300 итемов, когда ввожу первые 2 буквы очень сильно виснет, может можно как-нибудь не загружать все итемы сразу? Если что, инфу по ним обновляю каждый раз в сплеш скрине.
Аноним 22/02/16 Пнд 21:34:14 #408 №663280 
>>663278
> когда ввожу первые 2 буквы очень сильно виснет
А что происходит в textChanged'е?
Аноним 22/02/16 Пнд 21:36:43 #409 №663287 
>>663280
Делал по этоу примеру http://stackoverflow.com/questions/30398247/how-to-filter-a-recyclerview-with-a-searchview
[code]@Override
public boolean onQueryTextChange(String query) {
final List<ExampleModel> filteredModelList = filter(mModels, query);
mAdapter.animateTo(filteredModelList);
mRecyclerView.scrollToPosition(0);
return true;
}[/code]

[code]private List<ExampleModel> filter(List<ExampleModel> models, String query) {
query = query.toLowerCase();

final List<ExampleModel> filteredModelList = new ArrayList<>();
for (ExampleModel model : models) {
final String text = model.getText().toLowerCase();
if (text.contains(query)) {
filteredModelList.add(model);
}
}
return filteredModelList;
}[/code]
Аноним 22/02/16 Пнд 21:38:45 #410 №663290 
>>663287
> цикл по массиву в основном потоке
Ну а хули ты хотел? Выноси в отдельный поток.
Аноним 22/02/16 Пнд 21:50:36 #411 №663311 
>>663290
В асинктаск и потом просто в постекзекьюте менять данные?
Аноним 22/02/16 Пнд 21:51:31 #412 №663315 
>>663311
Да, асинктакс сойдет, не забудь его только отменить в onStop'e
Аноним 22/02/16 Пнд 22:23:05 #413 №663359 
>>663290
> Ну а хули ты хотел? Выноси в отдельный поток.
Шутишь блядь? Этот код должен за 0.002с выполняться на бюджетках.
Аноним 22/02/16 Пнд 22:29:16 #414 №663369 
>>663359
> 0.002с
Уже посчитал?

Там провисание в вечных GC. toLowerCase создает копию строки, добавление в ArrayList в цикле вызывает полное копирование массива каждый 2n-1 элемент. Да и неизвестна величина текста, по которому ведется поиск.
Аноним 22/02/16 Пнд 22:39:23 #415 №663395 
>>663369
> Уже посчитал?
Нет, личный опыт. И не такое делал, никто не жаловался.
> toLowerCase создает копию строки, добавление в ArrayList в цикле вызывает полное копирование массива каждый 2n-1 элемент.
А скорость этих операций ничтожна.
> Да и неизвестна величина текста, по которому ведется поиск.
Вот это разве что может быть причиной. Правда, текст должен быть ну очень длинный для этого.
Аноним 22/02/16 Пнд 23:45:09 #416 №663475 
>>663369
слыхал, что умные дяди говорят сначала написать понятный код, а оптимизировать если что-то не устраивает в его работе
Аноним 23/02/16 Втр 03:08:09 #417 №663600 
>>662881
Забей на эту блять функциональщину епт, в пизду все эти обсёрверы, оставь для петушков из яндекса. Им ещё котлин пиарить
Аноним 23/02/16 Втр 08:45:00 #418 №663636 
>>647624 (OP)
Аноны, а где вы заказы берёте под Android?

Я пока в офисе работаю, но думаю перекатываться на фриланс. На российских биржах, конечно же, ад и Израиль (да и платят мало). На фрилансер.ком в основном небольшие заказы (хз, может оно мне только такие показало из-за того, что я не зарегистрирован там?)

В общем, есть кто с фриланса? Поделитесь опытом
Аноним 23/02/16 Втр 09:13:36 #419 №663641 
>>663475
Ну вот ты написал понятный код, у тебя лагает, давай оптимизируй.
И если кому-то непонятно что в ЮИ треде нельзя делать никакую работу с даными то увы.
Аноним 23/02/16 Втр 09:44:32 #420 №663647 
>>663189 >>663196
Вообще то RoboVM, т.е. стараюсь использовать только стандартный средства Java
Аноним 23/02/16 Втр 09:46:59 #421 №663649 
>>663475
А потом надо профайлером пройтись, а не на сосаче спрашивать
Аноним 23/02/16 Втр 09:50:58 #422 №663652 
>>647624 (OP)
Здарова, программисты, и у меня несколько вопросов.

1. С помощью чего лучше всего реализовать тесты на несколько страниц?
2. Как быстро сделать такие интро-слайды, которые сейчас часто есть в новых материал-дизайн программах.
3. Есть ли какие-то простые способы для сохранения данных? А то с этим SQLite долго все очень.
4. Система аккаунтов в приложении. Есть какие-то либы может, или все же надо придумывать свой собственный велосипед?
5. Есть один фрагмент. Его .xml файл размечен - несколько текствью, радиокнопок и подобного. Проблема в том, что как-только я стараюсь вызвать метод например setText(), программа вылетает и в логах пишет NullObjectReference, мол R.id... обьекта не существует хотя перед этим я уже его присвоил. В чем проблема может быть?
Аноним 23/02/16 Втр 09:51:13 #423 №663653 
>>663647
Бессмысленно и беспощадно.
Аноним 23/02/16 Втр 09:55:39 #424 №663656 
>>663652
>2. Как быстро сделать такие интро-слайды, которые сейчас часто есть в новых материал-дизайн программах.
Я не понял про какие ты, но мне кажется обычной прозрачной активити, или непрозрачной с пейджервью.
>5. Есть один фрагмент. Его .xml файл размечен - несколько текствью, радиокнопок и подобного. Проблема в том, что как-только я стараюсь вызвать метод например setText(), программа вылетает и в логах пишет NullObjectReference, мол R.id... обьекта не существует хотя перед этим я уже его присвоил. В чем проблема может быть?
В коде где-то хуйню сделал, либо не тот xml либо не тот фрагмент.
>3. Есть ли какие-то простые способы для сохранения данных? А то с этим SQLite долго все очень.
Где же там долго?
А так shared preferences.
Аноним 23/02/16 Втр 10:16:31 #425 №663658 
14562117917220.jpg
>>663656
> Я не понял про какие ты, но мне кажется обычной прозрачной активити, или непрозрачной с пейджервью.
Вот пик в интернете нашел.
> Где же там долго?
> А так shared preferences.
SharedPreferences слишком простой и ограниченный.
> В коде где-то хуйню сделал, либо не тот xml либо не тот фрагмент.
Не, проверено.
Аноним 23/02/16 Втр 10:55:52 #426 №663677 
>>663658
>Вот пик в интернете нашел.
Обычное активити с пейджервью.
>SharedPreferences слишком простой и ограниченный.
Это шутка такая? Бд слишком долго а преференсы ограничены?
>Не, проверено.
Не, ты там 100% хуйню какую-то написал.

А вообще иди гайды читай, ебал я тебе помогать.
Аноним 23/02/16 Втр 12:07:03 #427 №663715 
>>663652
> А то с этим SQLite долго все очень.
ORM
Аноним 23/02/16 Втр 15:07:10 #428 №663839 
>>663715
>ORM
нет. эта хуйня слишком большая. Пока юзай sqlite и поглядывай в сторону Realm. Скоро его отфиксят и все будет гуд.
Аноним 23/02/16 Втр 15:14:27 #429 №663843 
>>663839
> Скоро его отфиксят и все будет гуд
Там фиксить осталось почти нечего. Только поправить постпроцессор для RealmObject'ов, чтобы можно было иметь собственные методы, и разрешить проблемы многопоточности.
Сильно он уже не изменится.
Аноним 23/02/16 Втр 15:15:16 #430 №663844 
>>663839
cupboard суканах для кого сделали?
Аноним 23/02/16 Втр 15:22:09 #431 №663853 
>>663843
нуну 160 ишью лист
Аноним 23/02/16 Втр 15:27:07 #432 №663857 
>>663853
> думать, что в issue лист валится не все говно подряд в т.ч. "у миня чет не работает, но доки я не читал((((" и "ну сделайте плз такую то фичу(((("
По bug и bug-crash там 25 записей.
Аноним 23/02/16 Втр 15:29:04 #433 №663860 
>>663857
>>663853
Вы лучше поясните реальный профит юзания реалма не в кроссплатформе?
Аноним 23/02/16 Втр 15:31:21 #434 №663862 
>>663860
хуяк хуяк и готово.
lazy query
скорость query (insert нахуй никому не нужен)
все понятно даже ослу.

анон кто умеет в rx - можешь дать ответ на сей вопрос?
Я только вкатываюсь и не всекаю как решить.
http://stackoverflow.com/questions/35577618/how-to-change-list-of-objects-using-rxjava
Аноним 23/02/16 Втр 15:37:59 #435 №663865 
>>663862
>хуяк хуяк и готово.
А sqlite и тем же cupboard не так? Или любая другая орм?
>lazy query
Сейчас немного не понял, суть лейзи в инициализации прямо перед работой с ним, но с sqlite хз как там, тоже ведь бд запрашиваешь.
>скорость query (insert нахуй никому не нужен)
Наверное я не слишком понимаю что такое твое квери, видимо не то же что и в склайте
Аноним 23/02/16 Втр 15:42:48 #436 №663867 
>>663860
Автообновление курсоров без лоадера.
>>663862
> хуяк хуяк и готово.
Ну и это тоже.

Через flatMap.
Но я там накостылил ? через передачу значения с предыдущего этапа на следующий через android.util.pair, хотя можно было бы объявить для этого собственные POJO
https://github.com/CherryPerry/android-amiami-preowned/blob/master/app/src/main/java/ru/cherryperry/amiami/API.java#L54

>>663865
> Сейчас немного не понял, суть лейзи в инициализации прямо перед работой с ним, но с sqlite хз как там, тоже ведь бд запрашиваешь.
RealmResult<T> смесь курсора со списком, если данных в списке нет, он получит через курсор, если есть, то не будет лишний раз дергать бд.
> Наверное я не слишком понимаю что такое твое квери, видимо не то же что и в склайте
Скорость SELECT запросов. Но realm на клык дает только дефолтному sqlite, если скомпилишь собственный бинарник последней версии sqlite, то соснет.
Аноним 23/02/16 Втр 15:52:05 #437 №663874 
>>663867
>скомпилишь собственный бинарник последней версии sqlite
PIZ DOS
Аноним 23/02/16 Втр 15:53:06 #438 №663875 
>>663862
Добавь еще тег android
Аноним 23/02/16 Втр 15:54:06 #439 №663876 
>>663867
.flatMap(Observable::from)
а что это такое лол.
и можешь ткнуть место где это происходит а то я пока нихуя не понимать че там происходит.
Аноним 23/02/16 Втр 15:56:50 #440 №663879 
>>663874
А так ты еще не знаешь что в склайте нету адекватного поиска в кириллице?
Потому иногда нужно самому переписать эту функцию.
Аноним 23/02/16 Втр 16:00:56 #441 №663882 
>>663876
> .flatMap(Observable::from)
Создает обсервабл из коллекции и начинает последовательно вызывать onNext для каждого элемента. Таким образом каждый элемент коллекции будет обработан параллельно.

Есть список производителей пиздогллазых фигурок. В поиске по каждому производителю несколько страниц. На каждой странице до 200 пиздоглазых фигурок.
Суть преобразований такая
HTML -> производители -> url для каждого производителя -> url для каждой страницы каждого производителя -> HTML -> пиздоглазая фигурка в бд

>>663879
В реалме она только хранится пока. Без поиска и сортировки.
Аноним 23/02/16 Втр 16:01:47 #442 №663883 
В штудию дебаг нативного кода завезли? Я так понял, что нет.
Аноним 23/02/16 Втр 16:06:06 #443 №663884 
>>663882
>В реалме она только хранится пока. Без поиска и сортировки.
Только кириллица?
Я надеюсь самому дописать можно или нахуй оно тогда нужно.
>>663883
В штудии даже компилятора нативного кода нету.
Аноним 23/02/16 Втр 16:14:48 #444 №663887 
>>663883
Завезли.
>>663884
> В штудии даже компилятора нативного кода нету.
Завезли подключаемый NDK.

Нормально все дебажится и компилится уже пол года. Я в начале сентября hello world jni собирал.

>>663884
> Только кириллица?
Только хранится. Первые 8 бит только участвуют в строковых операциях contains и orderBy. equals работает.
Аноним 23/02/16 Втр 16:18:56 #445 №663890 
>>663887
>Нормально все дебажится и компилится уже пол года. Я в начале сентября hello world jni собирал.
Проебался я, а то я пару дней назад собирал через cygwin.
>Только хранится. Первые 8 бит только участвуют в строковых операциях contains и orderBy. equals работает.
Хуйово, че.
Аноним 23/02/16 Втр 19:56:05 #446 №664094 
>>663882
сука они мне насоветовали хуйни какой-то и все не то.
У тебя в коде я не могу нихуя разобраться потому что там небось лямбды какие-то:
.flatMap(Observable::from) - вот этого у меня нет.
что за оператор 2 двоеточия?
Аноним 23/02/16 Втр 20:17:03 #447 №664118 
>>664094
http://pastebin.com/GLCpcRz2
смотри какую хуйню я сделал за весь день. Самое смешное что запустилось с первого раза без краша лол.
Аноним 23/02/16 Втр 21:05:09 #448 №664227 
>>664118
> rx без retrolambda
Хуя ты любитель скобочек и табуляций.

Тебе в ответе на стаке охуенное решение дали. Я с ним еще и свой костыль с pair'ами исправлю.
В map вызывать другой обсервабл комильфо, ибо ломается передача в сабскрайбер onError. Для создания обсерваблов из результата обсервабла и нужен flatMap.
Аноним 23/02/16 Втр 21:20:34 #449 №664243 
>>664227
с лямбдами я вообще охуею там что к чему.
>В map вызывать другой обсервабл комильфо
ты хотел сказать не комильфо?
Т.е копать в тот ответ который на flapMap-ax?
Аноним 23/02/16 Втр 21:23:47 #450 №664244 
>>664243
> не комильфо
Да.
> Т.е копать в тот ответ который на flapMap-ax
Да, первый ответ крайне хорош.
Аноним 23/02/16 Втр 22:16:14 #451 №664333 
>>664227
Можно поинтересоваться вашим опытом работы? Просто интересно, через сколько, примерно, времени можно будет понимать, то о чём вы пишите)
Аноним 23/02/16 Втр 22:20:39 #452 №664338 
>>664333
Я не он, но там не время работы важно, просто нужно сесть прочитать что такое rxJava, что такое стримы, что такое лямбда выражения.
Ну на худой конец что такое сабскрайбер\обсервабл, это уже патерн который в rxJava используется. В простонароде листенер.
Учитывая что все кроме листенера на сегодняшний день в стандартном сдк нету, то можешь не боятся что не понимаешь.

Лично я на этом не писал, но благо кучу статей пересмотрел, если придется довольно быстро вкачусь. И тебе советую таким же образом делать.
Аноним 23/02/16 Втр 22:26:34 #453 №664350 
14562555947050.png
>>663862
> можешь дать ответ на сей вопрос?
(пик 1) Что-то красиво сделать с двумя запросами не особо получилось.

Если делать, подзапрос на каждый тег выйдет чище, но менее эффективно.
Аноним 23/02/16 Втр 22:34:53 #454 №664367 
>>664350
Нечитабельно бля.
Нужно нахуй привыкнуть к этому пиздецу конечно.
Я бы за эти фигурные скобки и код после них с вертухи бы ебошил.
Аноним 23/02/16 Втр 22:56:12 #455 №664405 
Тебя то >>664350 я и ждал. Ответь на мой вопрос плз >>662881
Аноним 23/02/16 Втр 22:56:38 #456 №664408 
14562573985320.png
>>664367
Ой как страшно.

Ну смотри, в первой часте получаем результаты асинхронных запросов (теги и описания).
Во второй, группируем списки.
Возникает небольшая сложность, что во втором запросе другой порядок или может не быть описания.
Аноним 23/02/16 Втр 23:38:16 #457 №664497 
>>662881
Во-первых тут нет простого и общего решения на все случаи.

Насколько длинны по времени запрос?
Он разовый или данные возвращаются переодически (пока не отпишешься)?
У тебя там уникальный результат (следующий запрос вернет другие данные или POST)?

На самом деле разрушение активити при сворачивание гораздо менее вероятно,
чем выкидывание приложения полностью из памяти (некродевайсы не держат в памяти больше пары приложений).
Что в таком случае ты планируешь делать?
Аноним 23/02/16 Втр 23:42:33 #458 №664507 
>>664497
Как вообще улучшать потребление памяти? Дело же в хипе, а вот по нему данных крашлитикс не собирает. Имплементировать OnLowMemory и OnTrimMemory? А нельзя ли в ручнуюв этих методах просто сделать выключение активити? Чо там вообще сохранять?
Аноним 24/02/16 Срд 00:25:54 #459 №664589 
>>664507
В этих методах (в общем случае) надо просто сбрасывать кэш.

Если же ты хочешь удалять в нем активити, значит у тебя что-то неправильно работает.
Либо ты нас грузишь из-за падений на 0.001% самых старых девайсов.
Аноним 24/02/16 Срд 00:27:27 #460 №664595 
>>664350
ой котлиноняша пришел.

>Что-то красиво сделать с двумя запросами не особо получилось.
>Если делать, подзапрос на каждый тег выйдет чище, но менее эффективно.
это точно, но два запроса это быстрее чем 20 же, так?
Аноним 24/02/16 Срд 00:30:46 #461 №664599 
>>664595
упс, ты же это и написал.
сорян я 16 часов уже у компа
Аноним 24/02/16 Срд 00:31:02 #462 №664600 
>>647624 (OP)
Анон, требуется помощь.
Есть активити, унаследованное от FragmentActivity. В нем один viewpager, и ScreenSlidePagerAdapter, в которому в методе getItem() в зависимости от int аргумента страницы возвращается новый Фрагмент. Лэй-аут фрагмента одинаков для всех 7 страниц - два текствью и радиогруп с 3 кнопками. Текст для текствью берется из string-arrays в strings.xml. Вопрос - как правильно организовать отображение текста, правильную отрисовку - и правильной контроль за сбором данных с кнопок? Я пробовал в самом фрагменте определять страницу, и в зависимости от нее выводить текст. Но оно постоянно выводит первый элемент з массива, как бы я не вказал - или там 4 элемент, или 3. Хелп.
Аноним 24/02/16 Срд 00:52:47 #463 №664656 
>>664600
> пробовал в самом фрагменте определять страницу
Показывай как пробовал (на пастбил или ideone)
Аноним 24/02/16 Срд 00:54:43 #464 №664661 
14562644838430.png
Аноны. Помогите. В чем проблема. То все в бог съедит и не работает. То это окно зависнет. Что делать ?
Аноним 24/02/16 Срд 00:56:45 #465 №664664 
>>664656
Не ругайте.
http://pastebin.com/SDwdNKFz
Аноним 24/02/16 Срд 01:02:44 #466 №664673 
>>664661
И еще растягивать объекты не могу.
Аноним 24/02/16 Срд 01:43:19 #467 №664703 
14562673993830.png
>>664661
И как отвязать предметы друг от друга? Я двигаю 1 и 2 автоматически за ним.
Аноним 24/02/16 Срд 02:05:56 #468 №664724 
>>664664
Сразу адаптер нужно было кидать. А то фрагмент вроде как сам по себе рабочий.


Вообще предлагаю тебе отбиться от 1,2,3 и свича. Сделать нормальную сущность "вопрос" в логике и тд и тп. Но видимо это лаба которую нужно накостылять.

Сбор ответов с кнопок делается не очень красиво. Пару вариантов в общем.
1)В своей активити делаешь метод который будет принимать данные.
В фрагменте по нажатию кнопки гетАктивити() и приводишь к типу своей активити с методом, дальше передаешь в него данные. Самый прямой метод, но учитывая что видимый фрагмент у нас привязан к активити то не вижу особых проблем.
2)Можно посылать через бандл, но нахуя не понятно, да и подойдет только если будет какое-то действие со стороны активити, так как я не знаю ОнБандлЧенджед листенеров. Да и гетАктивити тоже понадобится.
3)Вариант с броадкастРесивером, тяжелый и беспощадный, но зато сможешь передавать все куда захочешь(в любую активити или сервис всмысле).

Всякие ottoBus не юзай. Нахуй оно сдалось. Куда не посмотри одни синглтоны в ведре.
Аноним 24/02/16 Срд 04:45:45 #469 №664761 
Каким гайдом лучше пользоваться? От кота или стартандроид?
Про ооп знаю. Но новичок.
Аноним 24/02/16 Срд 07:57:41 #470 №664790 
>>664408
Код конечно очень непонятный.
Аноним 24/02/16 Срд 08:04:51 #471 №664794 
>>664703
Не использовать билдер и хуячить руками в xml
Аноним 24/02/16 Срд 08:08:00 #472 №664795 
>>664724
Eventbusы выигрывают в практичности у localbroadcastmanagera. Сериализовывать в бандлы вообще нет никакого смысла данные, ибо они все равно проебутся, если не будет получателя, а в busах хотя бы sticky eventы можно сделать.
Аноним 24/02/16 Срд 09:55:45 #473 №664850 
>>664761
http://developer.android.com/training/index.html
Слышал, вот это неплохой
Аноним 24/02/16 Срд 10:25:44 #474 №664868 
Сап, программач, встречался ли кто со следующей проблемой: есть контейнер для фрагментов,все классно, все работает, транзакции меняют показанные фрагменты. Но стоит приложеньке повисеть в фоне часика 3, после переключения на нее фрагменты налипают друг на друга и транзакции творят хрень, переключаясь только между двумя
Аноним 24/02/16 Срд 10:32:20 #475 №664873 
14562991409590.png
>>664868
Попробуй не ждать два часа, а включить в настройках "dont keep activities".
Потом расскажешь о результате.
Аноним 24/02/16 Срд 11:04:24 #476 №664894 
>>664795
Конечно выигрывают, ебанули синглтон в процессе и таскаяют данные через него.
Еще бы не выиграли.
Аноним 24/02/16 Срд 11:45:47 #477 №664918 
>>664894
Ну так охуенно же. ТОЛЬКО ВЫИГРАЛИ
Аноним 24/02/16 Срд 12:28:40 #478 №664949 
>>664868
Все добавленные фрагменты сохраняются. Так что если saveInstanceStateBundle != null, то добавлять их заново не нужно.
Аноним 24/02/16 Срд 12:40:48 #479 №664964 
>>664918
А потом у тебя эти либы-синглтоны жрут больше оперативки чем все процессы в апликухе разом взятые.
Аноним 24/02/16 Срд 12:45:34 #480 №664969 
>>664964
И что в итоге? Локальные броадкасты, или обычные? Локальные то тоже синглтоном сделаны.
Аноним 24/02/16 Срд 14:05:17 #481 №665026 
>>664964
Евентбас можно хоть самому свой написать, у тебя там хранится только то кто на что подписан всего то.
Невелика потеря, для возможности не заниматься хуйней с сериализацией данных в бандл.
Аноним 24/02/16 Срд 15:00:04 #482 №665078 
>>664949
Я их не добавляю, в onResume я прописываю показ тех фрагментов, которые показывались на момент триггера onPause и скрываю, те что на тот момент были скрыты
Аноним 24/02/16 Срд 15:03:10 #483 №665081 
>>664873
включил, потыркал приложеньку, скрыл, открыл, все ок
Аноним 24/02/16 Срд 15:03:40 #484 №665082 
>>664873
а, нет, не ок. Все налезло друг на друга
Аноним 24/02/16 Срд 15:19:28 #485 №665095 
>>665078
Ты их в xml прописал?
Аноним 24/02/16 Срд 15:22:12 #486 №665099 
>>665095
В смысле ? Я транзакциями их меняю, в xml у меня контейнер ( frameLayout тобеш ). Добавляю фрагменты (для каждого создан класс), через транзакции и дальше hide/show по надобности
Аноним 24/02/16 Срд 15:25:36 #487 №665102 
>>665095
в onPause соответственно прописываю запись в sharedPreferences о тех, что откликаются на !%name%.isHidde() и из onResume hide/show в з-ти от значений префов
Аноним 24/02/16 Срд 15:26:03 #488 №665104 
>>665099
Вот эти hide/show до добра не доведут. Деалй реплейс.
Аноним 24/02/16 Срд 15:29:30 #489 №665107 
>>665104
replace вроде как с support fragment не дружит ?
Аноним 24/02/16 Срд 15:30:11 #490 №665108 
>>665104
Правда не уверен, помню только что там какие-то свои косяки были. Хрень в том, что hide/show пашут на ура пока аппликуха не поспит в фоне
Аноним 24/02/16 Срд 15:36:17 #491 №665113 
>>665026
Понятно что можно, лол. Просто я говорю что подход жестковатый, а вообще хз как оно работает если процесс пересоздается. Наверное в апликейшен классе как-то сабскрайберов сохраняют.
Аноним 24/02/16 Срд 15:38:59 #492 №665117 
Никак не могу сделать плавную смену клавиатуры на панель смайликов(или на любую другую вьюху).
Уже где только не смотрел, учитывая что все зависит от скорости прорисовки в результате получается херня, и на разных девайсах(по скорости работы разделил на 3) получается по разному, на средней скорости работы все ок.

Уже долбусь оч много времени, никаких идей, в телеграм лазил, я действительно не понимаю как он там это сделал. Код граничит с нечитабельным.
Аноним 24/02/16 Срд 15:42:51 #493 №665124 
>>665113
Посмотрел, replace с v4 все-таки пашет. Переделаю сегодня-завтра, по результатам напишу
Аноним 24/02/16 Срд 15:44:36 #494 №665127 
>>665107
Фрагменты вообще говно ебаное. Вроде работает. Это с нативными проблем не оберешся.
Аноним 24/02/16 Срд 15:49:57 #495 №665134 
>>665127
Фрагменты удобны. Или ты мне советуешь активити под каждый чертов экран делать ? Нет ? Может быть мне visible/invisible логику писать и все view элементы в одном xml файле прописать ? Вместо того, чтобы сказать , что фрагменты - шлак, посоветуй замену
Аноним 24/02/16 Срд 15:51:08 #496 №665135 
>>665127
>>665134
Фрагменты норм, на самом деле, но если можно делать без них то я делаю без них.
Аноним 24/02/16 Срд 15:57:29 #497 №665141 
>>665134
>>665135
Flow/Кастомные вьюхи на всякое говно.
Аноним 24/02/16 Срд 16:00:51 #498 №665143 
>>665141
Ты про master/detail flow ? Он какбэ на фрагментах пилит все ^_^
Аноним 24/02/16 Срд 16:00:54 #499 №665144 
>>665141
Ой бля ебал я ваше флов сириусли. Полнотсью меняет подход да и еще есть ньюансы в работе.
На хабре как раз перевод свежий сделали статьи от сквейр, можешь почитать коментарии.
Аноним 24/02/16 Срд 16:03:04 #500 №665148 
>>665144
Че за flow то ?
Аноним 24/02/16 Срд 16:04:09 #501 №665150 
>>665148
https://github.com/square/flow
Аноним 24/02/16 Срд 16:04:19 #502 №665152 
>>665135
Двачую, тоже если можно делаю без них

>>665134
> советуешь активити под каждый чертов экран делать
С фрагментами ты будешь активити + фрагмент под каждый экран делать

>>665143
> Он какбэ на фрагментах пилит все
Частный случай
Аноним 24/02/16 Срд 16:05:36 #503 №665154 
>>665152
Ты хотел сказать разметку + класс ? Какбэ одна активитя как контейнер и соответственно controller + еще одна на сплэшскрин
Аноним 24/02/16 Срд 16:11:03 #504 №665161 
>>665154
Гуглы сами не поняли как с фрагментами работать, можно посмотреть на сорсы ио и увидеть что они даже в главном окне с навигейшн баром используют разные активити. С этого я охуел.
Аноним 24/02/16 Срд 16:15:33 #505 №665164 
>>665154
А потом костылить замену :theme, спасибо не надо
Аноним 24/02/16 Срд 17:00:25 #506 №665202 
>>663015
>>663008
Вот спасибо, антуаны
Под лоллипоп собираюсь пердолить, насколько там огорожена работа с sdcard?
Аноним 24/02/16 Срд 17:11:37 #507 №665215 
>>665202
Хуже чем на 4.4 не будет.
Аноним 24/02/16 Срд 17:23:02 #508 №665225 
>>665202
На Marshmallow вообще надо явно запрашивать (через пермишен-диалог) разрешение на доступ к карте памяти.

Да и после этого любой чайник сможет снять с твоего приложения галку "доступ к sdcard"
Аноним 24/02/16 Срд 17:27:25 #509 №665229 
Анон, как обстоят дела с фрилансом на андройде?
Аноним 24/02/16 Срд 18:07:53 #510 №665266 
Андроидогоспода, ситуация такая. Нужно реализовать custom view, который представляет собой поле из клеток, каждой клетке можно задать цвет. И чтоб это view можно было масштабировать и скроллить по всем направлениям (подобно фоткам в галерее). Кода разумеется не прошу, накидайте список классов, слов, концепций чтоб заимплементить такую хуету, а я уже полезу гуглу мозги ебать.
Аноним 24/02/16 Срд 18:10:47 #511 №665269 
>>665266
View.onDraw
View.onTouchEvent
Аноним 24/02/16 Срд 18:18:22 #512 №665280 
>>664600
Вызываю помощь зала опять. Проблему вылетов решил, но вот такая беда. На каждую из 3 радиокнопок подается текст из массивов строк в strings.xml, при том в каждом массиве по 3 элемента (по одному массиву на страницу) . Вопрос в чем - на все 6 страниц в радиокнопках текст последнего массива, при том я в логах вывожу вместимое массива, и там всё ок - текст разный.
Аноним 24/02/16 Срд 18:20:09 #513 №665284 
>>665266
Еще можно android.view.GestureDetector и android.view.ScaleGestureDetector в догонку
Аноним 24/02/16 Срд 18:39:38 #514 №665299 
14563283789550.png
Сап няши, осилил Эккеля и начал читать Хорстманна. Думаю куда вкатиться: тырпрайз или андроид.

Поэтому прошу рассказать за андроид-разработку, как дела обстоят на рынке (дс-2 в частности), чем вы занимается большинство времени, ну и перспективы.
Аноним 24/02/16 Срд 18:51:42 #515 №665316 
14563291030380.png
>>665299
> прошу рассказать за андроид-разработку
Капчуем целый день, кодим по пару часов в неделю, ну и получаем от 150k/месяц (я считаю норм).

Также неспешно перекатываем все старые проекты на Kotlin.
Ну и самые востребованные сейчас, это Kotlin девелоперы с хотя бы годом опыта.
Аноним 24/02/16 Срд 18:56:32 #516 №665322 
>>665316
Неплохой манямирок
Аноним 24/02/16 Срд 19:07:38 #517 №665331 
>>665280
Бамп
Аноним 24/02/16 Срд 19:08:20 #518 №665332 
В натуре котлин такой прям охуенный что может стать конкурентом Джаве в разработке под Андроид?
Аноним 24/02/16 Срд 19:14:07 #519 №665336 
14563304476860.jpg
>>665322
А что не так то?

>>665332
Плиз хорош толстить (или ты ньюфажик?), уже давно все профессионалы перекатились.
Аноним 24/02/16 Срд 19:22:40 #520 №665340 
>>665336
Ясн.
Аноним 24/02/16 Срд 19:28:24 #521 №665345 
>>665316
Один из самых толстых постов на двачах
Аноним 24/02/16 Срд 20:11:25 #522 №665391 
>>665316
Монитор оттирать из-за тебя, падла.
Аноним 24/02/16 Срд 20:39:50 #523 №665427 
>>665316
Ну зачем ты ньюфань разводишь?
Аноним 24/02/16 Срд 20:41:01 #524 №665428 
>>665332
Он не станет конкурентом пока гугл сам не переедет на него. Да и хватит слушать толстого, на котлине работы сейчас в снг точно нету.
Да и вообще хз есть ли.
Аноним 24/02/16 Срд 20:42:33 #525 №665430 
>>665428
> на котлине работы сейчас в снг
Авито, jetbrains.
Аноним 24/02/16 Срд 20:44:41 #526 №665432 
>>665430
мм дохуя
Аноним 24/02/16 Срд 20:47:23 #527 №665436 
>>665432
Я просто опроверг, что работы совсем нет. Вакансии есть, но меньше чем по хаскелю какому-нибудь.
Аноним 24/02/16 Срд 20:58:03 #528 №665459 
>>665280
Ну помогите посоны.
Аноним 24/02/16 Срд 20:58:58 #529 №665462 
>>665430
https://www.avito.ru/company/job/android
Не объязательно, т.е. нахуй никому не уперлось.
А джетбрейнс само собой поддерживают свой же продукт.
Так что пердешь в лужу.
Аноним 24/02/16 Срд 21:01:32 #530 №665466 
>>665462
Конечно не обязательно, полторы калеки знают этот котлин. На месте уже обучат, главное андроид сдк.
Аноним 24/02/16 Срд 21:01:42 #531 №665467 
>>665459
Объясню попроще ситуацию: есть некоторый класс, которому в конструкторе передается некое число. Обьект этого класса создается в фрагменте. От этого числа зависит то, какой массив строк из ресурсов передастся. Выборка происходит еще на этапе конструктора. Вот в чем недопонимание - в конструкторе оно выбирает верный массив, но метод этого класса возвращает всегда один и тот же массив.
Аноним 24/02/16 Срд 21:05:10 #532 №665470 
>>665466
Ну и собственно вопрос, нахуй ты это сюда принес опровергатель?
Аноним 24/02/16 Срд 21:47:28 #533 №665495 
Сейчас перекат запилю, что-то я на нумерацию постов не посмотрел.
Аноним 24/02/16 Срд 21:56:07 #534 №665511 
>>647624 (OP)
ПЕРЕКАТ
https://2ch.hk/pr/res/665510.html
https://2ch.hk/pr/res/665510.html
https://2ch.hk/pr/res/665510.html
https://2ch.hk/pr/res/665510.html
Аноним 25/02/16 Чтв 22:41:53 #535 №666914 
>>665215
Вот уж не знаю, на киткате у меня как у пользователя никаких проблем не возникало с доступом приложений к карте памяти, а вот на лоллипопе какого-то черта половина приложений не умеет писать никуда кроме своей папки.
comments powered by Disqus

Отзывы и предложения