ティップスチップスと言うんじゃあない。Previewが唐突に発表されたので動作変更点をざっくりまとめてみました。意訳が多分に含まれるので「ここ間違ってんぞオラァ!」というところがあればご指摘いただけると幸いです。Changes)のまとめとなります。一通り目を通しましたが細かいところは省いています。大きいところはやはりJava8対応と省電力化でしょうか。省電力周りに関しては今後も積極的に取り組んでいくと明言していることから、かなり本気で取り組んでいることが見て取れます。Workパフォーマンス改善Dozeが強化された。2)の静止中という条件が緩和される。端末をポケットに入れて移動している場合にもDozeされるようになる。Dozeの状態は2段階ある。端末が電源に繋がっていない状態でしばらくの間スクリーンオフになると、第1段階のDozeに入る。この状態になるとネットワークの利用が不可となり、アプリ内の処理(バックグラウンド処理とか)の実行は延期される。端末が第1段階のDozeになってから、しばらく端末を静止した状態にすると第2段階のDozeに突入する。第2段階のDoze状態になるとネットワークだけでなくWakelock、AlarmManager、GPS、Wi-Fiスキャンなどの機能も制限される。いずれのDoze状態になっても、一定間隔でネットワークアクセスや延期されたジョブが実行される。スクリーンオンまたは電源接続でDozeが解除される。Nでは以下の3つの暗黙的インテントが廃止された。CONNECTIVITY_ACTIONACTION_NEW_PICTUREACTION_NEW_VIDEOこれらを廃止する理由は、多くのアプリが上記のブロードキャストに対するレシーバーを登録していることで、これらのブロードキャスト受信時に多くのアプリのプロセスが起動してしまい、一斉にCPUが使用されることにより大量に電力が消費されてしまうからである。接続状態の変化は頻繁に発生するうえ多くのアプリがレシーバーを登録しているため、CONNECTIVITY_ACTIONを廃止する効果は大きい。Nからはマニフェストに記載されていてもCONNECTIVITY_ACTIONを受信することはできない。CONNECTIVITY_CHANGEはフォアグラウンドのアプリのみ引き続き使用できる。ACTION_NEW_PICTUREとACTION_NEW_VIDEOは送信も受信もできない。N向けのアプリのみではなく全てのアプリで同様となる。将来的に他にも廃止される暗黙的インテントがあるだろう。今後はマニフェストでブロードキャストレシーバーを登録して暗黙的インテントを受けるような処理は避けた方がよい。バックグラウンド処理がしたければ代わりにJobSchedulerを使うべし。Nではユーザアカウントと外部ストレージ書き込みのパーミッションに変更有り。GET_ACCOUNTSはdeprecatedになった。N向けアプリではこのパーミッションは無視される。ACTION_OPEN_EXTERNAL_DIRECTORYが追加された。このパーミッションが許可されるとACTION_OPEN_EXTERNAL_DIRECTORYインテントが使用できるようになる。このインテントによってシステムはアプリ用のディレクトリを作成する。アプリはACTION_OPEN_EXTERNAL_DIRECTORYのインテントを受信するとユーザにパーミッションを求めるダイアログを表示する。ユーザが許可するとそのアプリ用のディレクトリに読み書きできるようになる。この時、STORAGEパーミッションは不要である。Intentのリファレンスを更新したので詳細はそっち見てね。Nではアクセシビリティを改善した。スクリーンサイズを拡大できるようにした。level23以下の場合、この機能を有効にするとアプリのバックグラウンドプロセスは一旦Killされる。フォアグラウンドプロセスではonConfigurationChangedが実行される。基本的にはほとんどのアプリでこの機能向けに何か実装しなければならないということはないが、画面横幅が320dpの端末でも正常に機能することをテストすべし。NではJavaをOpenJDK8ベースに変更する。AndroidにもJava8が。Javaの内部実装に依存するような処理(privateなフィールド使ってたりとか)がある場合は影響を受ける可能性がある。ArrayListのprivateなフィールドarrayは削除されたので、これを使ってるとNoSuchFieldExceptionで落ちる。Comparatorで自分自身を比較することができる。providerが無くなった。Nでは、非公開APIの使用させないようにネームスペースを変更した。NDK使ってる場合は公開APIだけを使うようにした方がよい。ないとNが正式リリースされた時にクラッシュするかもよ。N上で動いてるアプリで非公開API使ってたらlogcatにエラーログ出力するよ。ついでに画面上にもエラー表示するよ。Nの正式バージョンで動かしたらクラッシュするから注意されたし。アプリはNDKに含まれていないネイティブライブラリに依存すべきではない。古い端末でNDKに含まれていないネイティブライブラリを使用しなければならない場合、APIレベルに応じてロードするライブラリを変更すべし。management(端末アカウントの制御)、端末固有識別子へのアクセスなどに変更があった。installerがインストール済みでなければならない。ないとIllegalArgumentExceptionが発生する。ownerで行うように変更した。adminのアプリからDevicePolicyManager.resetPassword()しても、パスワード設定済みの場合は変更できないようになった。ownerのアプリは、たとえDISALLOW_MODIFY_ACCOUNTSの設定が有効になっていてもAccountManagementAPIからアカウント情報を変更できるようになった。ownerは端末に新規のアカウントを追加することができる。ownerは追加できる。CreateUser()とcreateAndInitial()メソッドはdeprecatedとなり、代わりにDevicePolicyManager.createAndManageUser()が使用できる。ownerは端末固有識別子にアクセスできる。DevicePolicyManager.getWifiMacAddress()で端末のMACアドレスが取得できる。端末で一度もWi-FiがONにされていなければnullが返る。snishimura関連記事[Android]ArrayAdapterをカスタマイズする時に絶対にやってはいけないこと先日、ArrayAdapterに対してadd()やclearなどの操作をしてもなぜか画面に反映されないという原因不明のバグを調査していたが、原因が判明したのでメモしておく。このバグはプログラミ...記事を読む[Mac]作業効率が劇的にアップするEclipseの必須キーボードショートカット15選そろそろAndroidの開発環境も徐々にAndroidStudioに移行してきているところも多いかと思いますが、実際の開発現場ではまだまだEclipseが主流派かと思います。ツールを移行する時...記事を読む[Android]ソースから見るArrayAdapter.clear()の動作Androidでリスト表示を実装する場合、ArrayAdapterを使う。頻繁に使う基本的なクラスではあるが、使い方やお作法をよく理解していないと思わぬバグを作りこんでしまうなかなか奥が深いクラス...記事を読むAndroidStudioで.soファイルを追加する設定方法ネイティブのライブラリを使用しているとあるプロジェクトをEclipseからAndroidStudioに手動で移行する際、ビルドは通るけど端末で実行時にエラーが出てアプリが強制終了するという現象が発生し...記事を読むAndroidで画面キャプチャを動画で撮る方法Androidで画面キャプチャを撮りたい。そのためだけにアプリを入れるなんてのはノーサンキュー。コメントをキャンセルメールアドレスが公開されることはありません。