Качественная выборка Android Dev новостей, тезисы важных новостей и статей, личное мнение
com.google.android.libraries.places:places:1.0.0null проблемой и стоит ли избегать его использования? Например, я видел что разработчики используют пустые строки как значения переменных типа String, которые не проинициализированы. null испорчена системой типов в Java, частые NPE и множество if (value != null). null - это хороший выбор для представления состояния, когда у вас не проинициализрован объект, либо не доступен в текущий момент. null не приводила к ошибкам в Kotlin было сделано множество средств:null, так в нем есть польза.dependencies { def work_version = 1.0.0 // Java implementation"android.arch.work:work-runtime:$work_version" // Kotlin KTX + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version"}class MyWorker(ctx: Context,params: WorkerParameters): Worker(ctx, params) { override fun WorkerResult doWork() { //do the work you want done in the background return Result.success() }} val constraints: Constraints = Constraints.Builder().setRequiresCharging(true).setRequiredNetworkType(NetworkType.CONNECTED).build()val myWork = OneTimeWorkRequestBuilder<MyWorker>().setConstraints(constraints).build()WorkManager.getInstance().enqueue(myWork)private static final String TAG = "MyClass";// orprivate static final String TAG = MyClass.class.getSimpleName();MyClass.class.getSimpleName() всегда будет возвращать одно и тоже значение - "MyClass". Фактически в оптимизированном байткоде можно делать подмену выполнения метода на простую строку. Важно понимать что это не работает для случая getClass().getSimpleName(), т.е. когда класс получается динамически.LOG_TAG для ваших логов 🎉class SampleActivity : Activity() { override fun onCreate(savedState: Bundle?) { super.onCreate(savedState) setContentView(R.layout.activity_leak) button.setOnClickListener { startAsyncWork() } } private fun startAsyncWork() { val work = Runnable { SystemClock.sleep(20000) } Thread(work).start() }}true если выполнение должно продолжиться на другом потоке. Большинство CoroutineDispatcher возвращают true. Но для Dispatchers.Main потока будет эффективнее исполнять код сразу же если запуск корутины происходит с Main потока.