Pull to refresh
12
Артур@forceLain

Пользователь

6
Subscribers
Send message
Конкретно в этой реализации необязательно тянуть палец до самого заголовка. Свайп можно начать с любого места.
Попробовать то обязательно стоит, может взлетит. Но если посмотреть их мастер-классы и доклады на предыдущих I/O, то можно заметить примерно такое:
— ребята, используйте AsyncTask
— а не, удобнее использовать пустой Fragment с setRetainInstance(true)
— короче, используйте фоновый сервис и ServiceConnection/ResultReceiver
— погодите, мы вам Loader и LoaderManager запилили
— всё фигня, теперь у вас есть JobScheduler!

Хотя, возможно, я утрирую. В любом случае «MVVM» + Data Binding должны хорошо дополнить друг друга.
Какое-то бредовое исследование. «После» не значит «потому, что». Такое впечатление, что его автор выбрал одно из миллиона изменений, которое ему больше понравилось, и навыдумывал из него выводов. Где доказательство того, что именно эти изменения привели к популяризации сервисов, а не, скажем, прически исполнителей?
Проверил, так и есть!

traceroute to 54.192.98.202 (54.192.98.202), 64 hops max, 52 byte packets
 1  192.168.1.1 (192.168.1.1)  4.154 ms  1.202 ms  1.142 ms
 2  l37-192-43-253.novotelecom.ru (37.192.43.253)  2.057 ms  1.900 ms  2.525 ms
 3  10.245.139.37 (10.245.139.37)  4.933 ms  3.877 ms  2.329 ms
 4  10.245.139.38 (10.245.139.38)  2.696 ms  4.924 ms  3.947 ms
 5  nsk06.nsk32.transtelecom.net (217.150.61.78)  3.381 ms  4.655 ms  3.448 ms
 6  * bl-gw.transtelecom.net (188.43.29.50)  6.030 ms *
 7  bl-gw.transtelecom.net (188.43.29.49)  4.707 ms  5.341 ms  7.678 ms
Да, какое-то время можно было клиент запускать напрямую, но потом прикрыли лавочку
Ага, спасибо! В первом примере просто пропущено слово «infix» у оператора «to», я не сразу заметил. В общем, покапитаню и скажу, что определяя оператор «to» внутри класса Struct мы получаем доступ и к объекту Struct и к строке перед оператором и ко второму параметру, следующему после оператора «to» и в этом сам фокус. С «invoke» та же история.
Выглядит круто! Только что-то у меня не вызываются в Вашем примере ни invoke, ни to :( Хотя, наверняка, это я где-то что-то упустил.
То, что Вы хотите сделать, это:
    fun F() : Int {
        val result = value
        if ( result == null ) return 0
        return result
    }


Или проще:

    fun F() : Int {
        return value ?: 0
    }

В первом примере result уже не property, а локальная переменная(константа), значение которой мы проверяем напрямую, без геттера.
то с картами все значительно печальнее:


Можно вот так:

mapOf(
                "1" to 1,
                "2" to mapOf(
                        "2.1" to 21,
                        "2.2" to 22
                ),
                "3" to mapOf(
                        "3.1" to 31
                )
        )
Откуда взялась эта абсолютно бредовая уверенность компилятора в том, что каждая буква моей программы — это элемент многопоточной конкуренции?


Дело не в многопоточности, а в том, что value — это не поле, а property. Когда вы вызываете if ( value != null ) или return value, вы обращаетесь не к полю value, а к геттеру, которого в вашем случае не видно, но он может появиться в наследнике класса. А так как геттер — обычная функция, он может вернуть как null так и не null, даже будучи вызваным 2 раза подряд.
нужно добавить репозиторий и зависимость для скрипта

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
        jcenter()
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.21.5'
    }
}


Ну и подключить сам плагин

apply plugin: 'io.fabric'


Но лучше поставить в Android Studio плагин Fabric IDE Plugin (https://fabric.io/downloads/android) и он сможет настроить это все автоматически
Пожалуй, самый подробный гайд по настройки всего процесса с нуля, круто!

$ android update sdk --no-ui --all --filter 1,2,163,164,168,169,170,171

Это, конечно, вариант, но придется прочитать все 171 пунктов, что бы выписать все числа. Но фильтровать можно и по названию пакета, например

android update sdk --filter tools,platform-tools,build-tools-24.0.3


К слову, для публикации в fabric от них же есть плагин к gradle, так что можно при желании поменять задачу в дженкинсе на таску в gradle. По мне так удобнее. Будет выглядеть примерно так

defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 2
        versionName "1.2"
        ext.betaDistributionGroupAliases = "mydevteam"
        ext.betaDistributionNotifications = true
        ext.betaDistributionReleaseNotes = "No Release Notes for this build."
    }


И сама таска

clean assembleRelease crashlyticsUploadDistributionRelease
если верить опросу, то урезанная версия PVS Studio должна была разлетаться как горячие пирожки
А, я понял сакральный замысел. Этот патч для тех, кто давным давно наигрался и сидит в непроплате. Теперь они смогут вернуться и играть бесплатно на триальных правах. Онлайн повысится на 3,5 человека, наверно.
К слову сказать, в еве сейчас есть триальные аккаунты на 2 и 4 недели (примерно). Новый альфа клон судя по всему будет иметь примерно такие же ограничения, что и триальные аккаунты, т.е. это просто бесконечный триал. За месяц в еве новичку можно разобраться вполне, зачем этот бесконечный триал нужен кому-то, кроме как в качестве альта к уже зрелому аккаунту (мониторинг цен, мониторинг локала, мониторинг ВХ) вообще не представляю.
Кстати, https не такая уж проблема, если подсунуть на wi-fi точку, к которой подключен девайс, свой сертификат и установить его в доверенные на девайсе. С эмулятором и того проще.
Имхо, проще снифить траффик, чем копаться в обфусцированном коде. Хотя, если совместить оба метода…
Я тоже согласен с другими комментариями, конкретно вот это кресло как в статье очень удачное и надежное. Пожалуй, самое живучее из всех, на чем я сидел :)
Тут же столько вариантов, прям как запихать два инта в лонг. Можно оффсет хранить, можно отрицательные id использовать :D
Кстати, шутки шутками, а в VK API идентификаторы сообществ отрицательные.
Переключение настроек полностью убивает процесс приложение и создает новый, по этому все презентеры тоже убиваются.
onSaveInstanceState()/onCreate() действительно вызываются, но не те, к которым мы привыкли, а новые, те что с 21 API: onSaveInstanceState(android.os.Bundle, android.os.PersistableBundle) и onCreate(android.os.Bundle, android.os.PersistableBundle)

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity