サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
夏の料理
yuyakaido.hatenablog.com
Google IO 2019で発表されたJetpack ComposeがMaven Repositoryで公開されたというツイートを見かけたので、ざっくりとコードを書きながらまとめてみた。今までAOSPでソースコードだけが公開されている状態でしたが、Maven Repositoryで公開されたことで気軽に試せるようになりましたね。個人的なメモなので新しい情報はおそらくないと思います。 Jetpack ComposeがGoogle Maven Repositoryにアップされとる— すたぜろ (@STAR_ZERO) October 11, 2019 関連ページ 今回公開されたMaven Repositoryはこちら 最新のソースコードをAOSPから追いたい場合はこちら 検証で利用したソースコードはこちら 検証環境 Android Studio 3.5.1 Android Gradle Pl
これはAndroid Advent Calendar 2014の30日目の記事です。 はじめに 25日目では目に見えないボトルネックを探す手法を紹介しましたが、今回はAndroidアプリ開発を行う上で避けては通れないANRとその対処法について書きます。 環境 この記事で紹介するソースコードの動作確認は以下の環境で行いました。 Mac OS X 10.9.5 Android Studio 1.0.2 Genymotion 2.3.1 Galaxy S2 (4.1.1) on Genymotion ANR ANRとはメインスレッド上で重たい処理を行った際に表示される警告で、ユーザーには「〜は応答していません」というダイアログとして表示されます。ここでいう重たい処理というのは具体的には以下の通りです。 メインスレッド上で5秒以上かかる処理を実行する BroadcastReceiverが10秒以内
これはAndroid Advent Calendar 2018の22日目の記事です。 はじめに 突然ですが、Androidアプリ開発で悩ましい問題といえば何でしょうか? ライフサイクル、端末やOS依存のバグ、状態管理などなど色々とありますが、今回は状態管理に焦点を当ててみたいと思います。本記事における状態管理とは、複数の画面に同一のデータが表示され、それらの一貫性を担保しつつ、リアルタイムに反映する必要があるものと定義します。この状態管理はいいねボタン問題と呼ばれることもあり、多くのAndroid開発者を悩ませてきた問題の1つです。 さて、Androidにおいていいねボタン問題を解決するためにはどのようなアプローチがあるでしょうか? ActivityやFragmentのonActivityResultメソッドを使って画面を更新する EventBusなどを使って状態変更を通知する Redux
DroidKaigi 2018の2日目の17:40からRoom 2にて、「マルチログインの実装方法」というタイトルで登壇してきました。 スライド 概要 マルチログインの定義 複数アカウントで同時にログインできる機能 マルチログイン実装でよくある問題とその原因 別アカウントのデータが表示されてしまう グローバル変数や状態を持つシングルトン 別アカウントのデータを上書きしてしまう データや非同期処理がアカウント単位で管理されていないこと コードが複雑化してしまう 複数アカウントを扱えるアーキテクチャになっていないこと マルチログイン実装の設計方針 データや非同期処理をアカウント単位で管理する(アプリ内にアカウント毎のDockerコンテナを立ち上げるイメージ) 異なるライフタイムを持つインスタンス管理はDaggerなどのDIコンテナを使うと楽 サンプルアプリ 複数アカウントで同時ログイン可能なT
これはAndroid Advent Calendar 2017の12日目の記事です。 この記事はMVIアーキテクチャの概要とその実装を紹介するものです。概要については、MODEL-VIEW-INTENT ON ANDROIDからの抜粋で、実装についてはTODO-MVI-RxJavaをもとにしています。 概要 MVI is inspired by some other js frameworks like redux and react, but the key principle comes from Model-View-Controller (MVC) MVIはMVCのコンセプトがもとになっていて、そこにReduxやReactで採用されている考え方を取り入れています。 MVCのコンセプトとは、 A Model that is observed by the View and a Con
これはKotlin Advent Calendar 2017の6日目の記事です。 はじめに KotlinはJavaとの相互運用性を重視していますが、JavaとKotlinは言語仕様的に異なる部分があり、Kotlinはその違いを吸収するために様々な工夫をしています。 Jvmアノテーション JvmStaticアノテーション KotlinのCompanion Objectで定義したコードをJavaから呼び出すと、Companionを経由することになります。Companion経由であっても動作上の問題はありませんが、出来れば普通にJavaで定義した場合と同様な呼び出し方をしたいですよね?そういった場合はJvmStaticアノテーションを付けることで、Staticメソッドとして定義されているかのように呼び出すことができます。 // Kotlin class JvmStaticSampleForCom
2日目の16:00から「Error Handling in RxJava」というタイトルで、RxJavaにおけるエラーハンドリングについて発表してきました。 スライド 概要 RxJavaのおさらい Reactive Extensions for Java マーブルダイアグラム RxJavaにおけるエラーハンドリング Catch(エラー発生時にリカバリーを行う) onError:エラーをキャッチする onErrorReturn:エラーをキャッチして代わりのデータを返す onErrorResumeNext:エラーをキャッチして代わりのObservableを返す Retry(エラー発生時に再購読を行う) retry:エラー発生時に再購読する retryWhen:再購読する条件を細かく制御する 基礎編 エラーをトーストで表示する:onError 代わりのデータを表示する:onErrorReturn
Javaはクラス内にクラスを定義することが出来ます。クラス内に定義されたクラスはインナークラス(内部クラス)と呼ばれており、4種類の定義方法が存在します。定義方法によって異なった特性を持っており、間違った使い方をすると思わぬバグの元になり得ます。 本記事では4種類のインナークラスの違いのみを扱います。インナークラスの用途等は扱いません。今後取り上げるかもしれませんが。 本記事では、エンクロージングクラス = インナークラスからみて外側にあるクラスとします。 Javaにおける4種類のインナークラス 非staticインナークラス staticインナークラス ローカルクラス 無名クラス 非staticインナークラス 普通に定義したインナークラスです。 public class OuterClass { public static void main(String[] args) { new Ou
Fragmentが登場してからActivityに全てのコントローラーロジックが集約される悪夢から開放された訳ですが、公式リファレンスをちゃんと読まずに実装しているとハマりますよ、というお話。 そうそう、Fragment自体はHoneycombで登場しましたが、ネスト出来るようになったのはJelly Beanからなんですね。 作業環境 Mac OS X 10.9.1 Android Studio 0.4.3 Fragmentのネスト Fragmentを使って開発をしていると当然それらをネストすることもあると思います。その際にFragmentTransactionやFragmentManagerを使うと思いますが、ActivityのRoot ViewにFragmentを入れる場合とFragmentにFragmentを入れる場合では微妙にやり方が異なります。 前者の場合はいつも通りにトランザクシ
単純に繋げただけでは動作しません。私の環境ではディスクを吸い込んでくれませんでした。 作業環境 Mac OS X 10.9.1 VMware Fusion 5.0.4 Windows 7 Professional 64bit 症状 VMware Fusion上でWindowsを立ち上げた状態でUSB SuperDriveを接続すると以下のようなポップアップが表示される。これは正常な動作です。 ここで「Connect to Windows」を選択します。そうすると、Windowsが勝手にドライバのインストールを開始します。そのインストールが終わってもう使えるかと思いきや、ディスクを吸い込んでくれません。 原因 原因は調べるまでもなく上記のポップアップに書いてあります。 The device requires installation of the Apple Boot Camp driver
これはAndroid Advent Calendar 2014の25日目の記事です。 はじめに Androidアプリの開発をしていたのがきっかけで彼女が出来たyuyakaidoです。昨日のkaneshinさんの記事の冒頭にあるように僕はマルチスレッド初心者なので常にシングルスレッドで動作しています。勿論クリスマスイブも。 今回はAndroidアプリのボトルネックを探すための手法を紹介していこうと思います。 目次 StrictMode パフォーマンスに影響を及ぼすコードの検出 Traceview パフォーマンス計測ツール その他 Viewのネストについて Viewの塗り潰しについて 環境 この記事で紹介するソースコードの動作確認は以下環境で行いました。 Mac OS X 10.9.5 Android Studio 1.0.1 Genymotion 2.3.1 Nexus 6 (5.0.0)
x86とIA-32って何が違うの?x64ってx86を64ビットに拡張したものだから、x64 = IA-64ということ? OSをかじったりしていた割にこの辺が曖昧だったので調べてみた。といっても概要だけですが。 x86 一言で言えば、インテルが開発した8086とその後継CPUの命令セットアーキテクチャを指す言葉です。 インテルは1978年に8086、その後細かい派生を無視すると、80186、80286、80386、80486という順番でCPUを開発しました。インテルが開発したCPUの名前は連番になっており、連番になっている部分をxで置き換えることで「x86」という名称が生まれました。 ちなみに、8086と80186と80286は16ビットCPU、80386と80486は32ビットCPUです。そして、これらのCPUは良い意味でも悪い意味でも8086からの互換性を保っています。 IA-32・IA
作業環境 Mac OS X 10.9.1 Xcode 5.0.2 準備 1. Objective-C-HMTL-Parserの導入 HTMLをパースするために「Objective-C-HMTL-Parser」というライブラリを使います。ソースコードはGitHubで公開されていますので、上記のリンクから適当にローカルにクローンしてください。クローンしたもののうち、README.md以外をXcodeの自分のプロジェクトにコピーしてください。コピーする際に、「Copy items to destination's group folder」にチェックを必ず付けてください。 2. 依存ライブラリの追加 Objective-C-HMTL-Parserはlibxml2.dylibのラッパーですので、libxml2.dylibを追加しないと動きません。 General -> Linked Framewo
このページを最初にブックマークしてみませんか?
『Just for Fun』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く