If you’re coming from Java, you probably associate asynchronous with threads. And that means you’ve dealt with shared mutable state. You’ve spent countless hours chasing down deadlocks and race conditions. You’ve taken care when modifying shared state using locking primitives like synchronized. You might have even used higher order locking functions like Semaphores and Latches. At this point you c
So, you’ve migrated your Android app to AndroidX and, in the process, have also switched to using Material Components for Android as opposed to the Design Support Library. Alternatively, perhaps you’re in the fortunate situation of starting an app from scratch and get to use these new libraries right away. In either case, the core widgets you incorporate into your app now mostly fall under the com
GradleのMatching repositories to dependenciesを使ってライブラリのダウンロード先を指定する Updated at Fri, Dec 14, 2018 JitPackからライブラリをインストールしたかったところ、JCenterからライブラリをインストールしてしまう事件がありました。 詳しくは次のリンクを参照してください。A Confusing Dependency 従来のGradle4系ではおそらく、上記の問題を解決することは出来ない、もしくは非常に困難でした。しかし新しくGradle5.1に Matching repositories to dependencies が導入され、上記の問題を解決できます。(Gradle5.1はまだrcです) まず最初に従来の書き方を説明して、次に新機能を使った書き方を紹介します。今回は例として、cloudflare
はじめに 本記事はコネヒト Advent Calendar 2018の24日目のエントリーです! qiita.com メリークリスマス!Androidエンジニアの富田です。今回はKotlin IDE PluginのKontributeに関する小話で、plugin-common.xmlが生まれてちょっとだけめんどくさい作業が減ったよという内容を紹介します。 Kotlin IDE PluginのKontributeって? 以下のようなCode InspectionやIntentionなどの機能についてのKontributeを表します。 github.com 詳しい内容については割愛させていただきますが、Kotlin IDE PluginやKontributeについて興味を持った方はぜひ、しらじさんの下記資料をご覧ください! photos.google.com Kontributeする上でここが
Structured concurrency – Roman Elizarov – Mediumでは、Kotlin coroutine 0.26.0でCoroutineScopeを導入した経緯などが書かれているんですが、タイトルのStructured concurrencyってのが結局なんなのか本文中にはあんまり出てこないんですよね。 んで、CoroutineScopeの動作の理解に精一杯で、coroutineScope関数がなんなのか、どういう時に使うべきなのかよくわからないし、ましてやsupervisorScope関数なんて言われた日には意味が不明なわけです。 とりあえずlaunch関数内でasync関数呼び出したら駄目なんだな〜ふ〜んなんで? Notes on structured concurrency, or: Go statement considered harmfulを頑張
In this post we’ll dive into how to use them in your apps. VectorDrawable was introduced in Lollipop (API 21) and is also available in AndroidX (as VectorDrawableCompat) bringing support all the way back to API 14 (over 99% of devices). This post will outline advice for actually using VectorDrawables in your apps. AndroidX FirstFrom Lollipop onward, you can use VectorDrawables anywhere you would u
Misoca+弥生+ALTOA Advent Calendar 2018の10日目のエントリです。 グッと来るタイトルにしようと思った結果、意味不明になってしまったのは自覚している。許してほしい。 ※解説編について 何やってるかわからんという声を多数頂いたため、解説編を書いた。 よかったら併せてご覧ください。 マルチカーソルを使わないVSCodeはただのVSCodeだ!〜解説編〜 - memo.md 🤔 マルチカーソル? さて、VSCodeではカーソルを複数作ることができる。 vscode-doc-jp.github.io 簡単な動作例 これはVSCodeに限った機能ではなく、SublimeText, Atom, JetBrains製IDEなどでも似たようなことができる。 昔にSublimeTextを使い始めたころから愛用している機能で、私はこれが無いと生きていけない体になっている。 意
Android devices come in all sizes, shapes and screen densities. That’s why I’m a huge fan of using resolution independent, vector assets. But what exactly are they? What are their benefits? What are the costs? When should I use them? How do you create and use them? In this series of posts I’d like to explore these questions and explain why I think that the vast majority of the assets in your apps
仕事でLinearLayoutManagerやGridLayoutManagerといったGoogle提供のLayoutManagerでは実現できないUIを要求されたので、今LayoutManagerをスクラッチで実装しています。 大先輩が作ったAbemaTVの番組表なんかもオリジナルのLayoutManagerで実装されています。 備忘録としてミニマムなLinearLayoutManagerの�実装方法を例に�まとめておきたいと思います。 最低限実装しなければならないもの generateDefaultLayoutParams onLayoutChildren canScrollVertically canScrollHorizontally scrollVerticallyBy scrollHorizontallyBy generateDefaultLayoutParams デフォルトの
Java にはキャッチされなかった例外により Thread が突然終了した場合、あらかじめセットしておいた UncaughtExceptionHandler.uncaughtException() が呼ばれるという機能があります。 本来、キャッチされない例外が発生するのは避けなければなりませんが、どう頑張ってもバグは入り込むもの。 そのため、バグレポートやリソースの保全等に使用されることが多いようです。 この機能、適切に使用すると便利なのですが、使用方法を誤ると ANR (Application Not Responding) が発生する不具合につながります。 以下、その原因と対策について調べてみました。 ANR を発生しないようにする方法 ちょっと順番を変えて、先に対策から書いてみたいと思います。 以下のコードを実行し、ボタンを押すと ANR が発生します。 public class M
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く