Video: https://youtu.be/MIV7Mi9zko8 Android上の開発は非同期の扱いを避ける事はできないです。ネットワーク、フレームワーク、ユーザの操作などから非同期処理が発生してます。油断してしまうとアプリが複雑化してメンテナンスが難しくなります。皆様はネットワークからレ…
Video: https://youtu.be/MIV7Mi9zko8 Android上の開発は非同期の扱いを避ける事はできないです。ネットワーク、フレームワーク、ユーザの操作などから非同期処理が発生してます。油断してしまうとアプリが複雑化してメンテナンスが難しくなります。皆様はネットワークからレ…
Android の API level 21 で導入された documentLaunchMode に関する Activity の挙動にバグっぽいところがあって、結構扱いに困るのでまとめておきます。 「documentLaunchMode? 関係ないや」 って思ってる人でも、外部アプリからの Intent を扱うアプリを書くときに影響されるかもしれません。 まとめ Activity の documentLaunchMode として intoExisting が指定されており、既存の Activity が再利用される場合は、launchMode が standard であっても Activity の onNewIntent メソッドが呼ばれるべき *1 だが、実際には呼ばれない。 バグっぽい。 AndroidManifext.xml で documentLaunchMode の値を指定していな
前回のブログで書いたように、CDD 6.0では5.1に比べて色々と変更や追加があります。 特に気になるのは 3.2.3.2 節の "Intent Resolution" です。この節のタイトルは、CDD 5.1までは"Intent Override"でした。 IntentはAndroidというOSを特徴づける重要な基本機能ですが、そのIntentの基本部分をこの節で規定しています。なのに、節の名前を変えてしまっているのです。このような変更は、5.1以前のCDDでは一度もありませんでした。 実は、CDD 6.0(というか、Android 6.0 Marshmallow)ではPackageManagerの挙動に変更が加えられています。 その変更とは、App Linksへの対応です。 App LinksのAPIについては、次のGoogleの公式サイトに書かれていますので、ここでは詳しく書きません
eventbus.md EventBus EventBus は必ず onStart() と onStop() で呼ぶ。バックグラウンドで色々動かれて困る。 また、onStop() では super.onStop() よりも 先に 呼ぶ。 @Override protected void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override protected void onStop() { EventBus.getDefault().unregister(this); } proguard の設定 忘れがちですが、設定しないと最適化オプション付けたときに死ぬ -keepclassmembers class ** { public void onEvent*(**); } # Only r
<script src="../lib/WebModule.js"></script> <script> WebModule.publish = true; </script> <script src="../lib/WebGLDetector.js"></script> <script src="../lib/UserAgent.js"></script> <script src="../lib/WebIntent.js"></script> <script src="../lib/IntentDialog.js"></script> <script src="../lib/IntentDialogTemplate.js"></script> <!-- dialog html fragment --> <script src="../lib/lang/en.js"></script> <
android:launchMode については以前のエントリ 「Android Activity, Task, Stack, Launch mode」 にも少し書いたのですが、それぞれの違いについてもう少し詳しく説明したいと思います。 上記のエントリで私がまとめた launchMode の表を再掲します。 この表に載っている 「インテントに応答するアクティビティをどのタスクに保持するか」 「アクティビティのインスタンスを複数生成できるか」 「インスタンスに他のアクティビティを含めることができるか」 「クラスの新しいインスタンスを起動して新しいインテントを処理するかどうか」 について順番に説明します。 ■ インテントに応答するアクティビティをどのタスクに保持するか ここに アプリX があるとします。 このアプリは ACTION_SEND を処理できる Activity A を持っています。
AndroidのフレームワークにはAndroidを強く特徴付けるIntentという仕組みがある。 IntentはActivityやServiceといった実行単位のコンポーネントを起動する場合に利用される。 プログラマはstartActivityやstartServiceといった関数を用いてActivityとServiceの起動を命ずるが、このとき引数にIntentを使うことにより実行対象を指定する。 Intentが優れているのはこの指定方法にある。 Intentは明示的にクラス名を指定することにより明らかに実行されるコンポーネントを指定することが可能だ。 しかし、より優れたIntentの利用方法は暗黙的なIntentの利用である。 暗黙的なIntentを用いることにより、直接実行コンポーネントを指定する必要がなくなる。 これによりコンポーネント間の結合はより緩やかな疎結合となる。 呼出元の
IntentFilterにカテゴリandroid.intent.category.DEFAULTを登録しないと、 暗黙的IntentでActivityを呼び出すことができません。 「そういうものだ」で終わってもいいのですが... なぜわざわざDEFAULTカテゴリを指定しなければならないのか?調査しました。 ディベロッパサイトの-Intents and Intent Filters #Category test-では、 startActivityに渡される暗黙的Intentは、カテゴリ"android.intent.category.DEFAULT" を含んでいるかのように扱われる 旨の記載があります。 http://developer.android.com/guide/topics/intents/intents-filters.html#ifs ここの実装部分を見てみます。 Inte
AndroidアプリケーションはAndroidマーケットからのみではなく、それ以外の手段でも インストールすることが可能です。たとえば、SDカードなどの領域に保存しているapkを アプリケーション上からインストールすることができます。 これによりたとえば、Androidマーケットに公開できないアプリ(アップロード上限を超えてしまうサイズのアプリのような)を公開したい場合や、独自のマーケットで公開したい場合などに利用することが可能です。 詳しい解説は続きからどうぞ。 MIME typeを指定する apkのインストールはMIME typeに application/vnd.android.package-archiveを指定したIntentを発行するだけです。 たとえばSDカード上に保存されているapkをインストールしたい場合には以下のようにします。 String fileName = Env
前回の日記では Activity を呼ぶ振る舞いに関する一覧表を作りましたが、今回は Broadcast された振る舞いについての一覧表を作ります。 意味が分からなかった定数が多かったです。たぶん表に間違いが多い思いますので、指摘して頂けると嬉しいです。 Broadcast Actions 『Broadcastされる振る舞い』を指定する方法の一覧表。 それぞれの振る舞いに対するデータは、URI形式で渡します。 定数名 説明 URL ACTION_AIRPLANE_MODE_CHANGED 端末が飛行モードに変更された ● ACTION_BATTERY_CHANGED 端末が充電中かどうかや、バッテリー残量が変化されたか ● ACTION_BATTERY_LOW バッテリー残量が非常に少なくなった ● ACTION_BATTERY_OKAY バッテリー残量が非常に少ない状態を脱した ● AC
アクティビティ と タスク と スタック と 起動モード (と ライフサイクル) 開発の基礎のアクティビティとタスク以降 がとっても(日本語が)わかりにくかったので、 私なりの解釈を書くことにしました。 (もしかしたら間違ってるかもしれないよ) なんで、わかりにくいかと言うと、用語の定義がされてないからなんですね。 なので、ちゃんと定義(みたいなの) ・アクティビティ これはいいよね。いわゆる Activity です。 ・ルートアクティビティ タスクを開始するアクティビティのこと。 通常だと、AndroidManifest.xml の タグのなかに <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNC
AppWidget 上のボタンをタップしたときに編集画面を開いたりする場合、RemoteViews を使った次のようなコードがよく紹介されています。 RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.appwidget); Intent intent = new Intent(context, WidgetConfigure.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); // or // PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); // or //
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く