こんにちは 「Android最新情報」へようこそ
または私の呼称で 「Androidキーノート」へようこそ
私はチェット・ハーザ Android UI Toolkitチーム所属です
私は"Romain Guy" グラフィックスチーム所属です
私はダン・サンドラー システムUIチーム所属です
時間がありませんので 始めましょう
さあAndroid最新情報です
前回API 25で終わりましたね
なのでそのGit-SHAを持ってきて
Git-diffに出します これで開始です
これを書き留めてくださいね
いいですね
次
よかったぞ
こういうの好き
列挙型にするところだったね
ケッサクだった
わかった？
ここにいる人たちの目的考えて
なぜ前に考えなかったのか
私たちはこういった講演で 何年も最新情報をお伝えしてきました
おわかりですね―
ブレザーを忘れました
格好いい赤のブレザーを キーノートで持って行かれた
皆さんには―
君は危険なヤツだな
でも今年はちょっと違いましたね
これに先立つ 開発者プレビューがうまくいって
こういうAPIをたくさん前に見てきてる
すばらしい機能を披露する場の Google キーノートがありました
さらに開発者向けのことを学べる 開発者キーノートもありました
今回は何をするんでしょう？
Android最新情報のポイントは？
存在の危機だ
さて―
- リモコンテストした？ - したよ
この講演はワインかウイスキーの試飲か
全部のボタンを押せる 自販機だと思ってください
これは職人が手作業で 厳選したようなものです
Androidの新リリースで 見落としていたかもしれないことや
行う必要があることについてです
それがAndroid Oの一部であれ
正直ステージにいるときに 話すことだけについてであれ
以上をもってこれは真の Android最新情報なんです
特に開発者プレビューやI/O講演や 他講演で見落とされたこと
そしてそれに注意を払うべき理由です
最後に今日の到達目標は
これです
皆さんいつもこれには興奮していますが
最後までとっておきましょう
ええ！
良い話しだから
では始めましょう
ロメイン UIとグラフィックスの話を
よし始めよう
最初に話したい機能は
キーノートの１つで 今朝見たものです
チェットこのリモコン効かないよ
テストしなかったでしょ
ああ
時間の無駄
いいよ 後ろでスライドやってあげるから
じゃあ次のスライドに行って
これが僕にリモコンくれない理由
さて それで将来
僕にはこれでいい
そっちに戻って
君を見たくないから
今朝皆さんが講演で ご覧になった最初の機能は
ピクチャー・イン・ピクチャーは もうTV用だけではないということです
携帯用ものでもある
サードパーティのアプリの例があります
Netflixはあなたの携帯で ピクチャー・イン・ピクチャーで動作します
リモコンちょうだい
- 戻って - 戻った
皆さんのアプリへの実装も本当に簡単です
マニフェストを 修正しなければいけないだけで
アニメーションの再生止めて
supportsPictureInPicture="true" というだけ
resizeableActivity="true"は Oではもう必要ありません
あとはconfigChangesを テストすればいいのです
コードはenterPictureInPictureMode()で １つ［不明瞭］を呼び出す
getActivity()で
enterPictureInPictureを呼び出す
非常に簡単ですし ユーザーを満足させられます
そして私にとても大切な機能 カラー管理です
広色域ディスプレイへの サポートをOで追加しています
全デバイスには対応しません
その機能をサポートするデバイスのみで アプリに対し可能になります
16 bit PNGファイル用に サポートを追加しています
広範囲の色と より多くの飽和色が可能です
ICC プロファイルも サポートしていますので
カラープロファイルがJPEG/PNG/WebPに ビットマップで埋め込まれます
複数の画面間で正確な演色となります
また新APIも多くありますが
それについては週の終わりの 違う講演で詳細をお話します
画像は千の言葉にも値します
これはカラー管理とその仕組みです
明らかだといいですが
カラー管理は本当に皆さんご自身のアプリで 経験されていることだと思います
カラーはデバイス間で異なって見えます
Android Oで 解決策をご用意しました
詳しく知りたい場合
金曜11時半から ステージ２での講演でお話します
題は「カラーの理解」です
次に複数のディスプレイに対して サポートを追加しています
もしアプリがすでに―
このリモコン効きませんね
皆さんのアプリが
マルチウインドウ、マルチウインドウモードを すでにサポートしているなら
Oでもマルチディスプレイをサポートします
携帯またはネットワークデバイスが マルチディスプレイに接続されていて
アプリに互換性があれば
ユーザーは皆さんのアプリを 異なる画面に送る選択ができます
これが起こるとサイズ変更設定を 取得する必要があります
またアクティビティが表示される ディスプレイをコントロールできます
それにはActivityOptionsが使えます
この機能をサポートしたいなら アプリをよくテストすべきです
テストで役立つ 新デベロッパーツールが２つあります
$ adb shell dumpsys displayを 実行すればいいのです
デバイス上で現在可能な ディスプレイをすべて列挙します
activityインテントで adb shell startを呼び出したら
アクティビティを開始させたい ディスプレイを規定できます
テストするのに とても簡単な方法になっています
これらAPIの詳細は Office Hoursでどうぞ
木・金曜はWindows用 Office Hoursとアクティビティです
次はメディアです
メディアパッケージにとても便利な クラスをたくさんご用意しています
Media Player/MediaRecorder /Extractor/Codecです
新しいgetMetrics APIも 各クラスに追加しました
処理しているメディア情報の クエリに役立ちます
解像度やコーデック ビットレート デュレーション
といったデータをクエリできます 簡単に使えます
オブジェクトの１つで getMetrics を呼び出すだけです
PersistableBundleを取得して
developer.android.comで 資料を参照し
どのようなクエリが可能かを 知ることができます
プレイバックも改善しました
アプリ内でのバッファーを制御できます
透かしの高低を規定できます
動画のプレイバックは 透かしが低くなるまで開始しません
キャッシュデータが この透かしの高低間に保たれるよう
システムはベストを尽くします
またこの透かしの持続時間や データ量やサイズを規定できます
探索も改善しました
動画内を探索する場合 ビヘイビアを選択できます
一番近いフレームを探索したいのか
次のキーフレームか 前のキーフレームか
一番近いシンクフレームかを選べます
Widevineで DRMプレイバックを作りました
すべてのアプリで さらに簡単に使用できます
レコーディングには 今までMedia Mixerでは
１ビデオトラックと／または １オーディオトラックを追加できるだけでした
今回から好きなだけオーディオ／ビデオ トラックを持つことが可能です
カスタムトラックも作成できます
MIME 型は"application/"で 開始しなければなりません
どこでも望む種類のデータを エンコードできる側波帯です
例として360度動画とかその類を 再生できるようにしたかったら
JavaScript データを エンコードすることです
WebView はとても便利な 新しいAPIが付属しています
Chromeでお馴染みの ブラウジング保存機能を追加して
マルウェアや安全ではない ウェブページを検知できるようになりました
マニフェストにこのタグ メタデータタグを追加する場合
Chrome自体がユーザーの ブラウジング経験の安全に使用するのと
同じバックエンドと同じAPIを使用します
WebView は複数プロセスを 用いるようになりました
特にレンダープロセスがあります
これらマルチプロセスを処理する 新しいAPIもあります
レンダープロセスがクラッシュしたら
Termination Handle API を 使用してクラッシュを検知し
アプリでどうするかを決められます
アプリをクラッシュもできますし
WebViewの再起動を試みられます
何かを記録してユーザーへの メッセージ表示もできます
これまでよりずっと良くできています
またRenderer Importance APIを使用して
低メモリ状態に対し 対処することもできます
システムが低メモリの場合
どこかからRAMを 再要求しようと試みます
そしてシステムに WebViewが大事なのか
アプリにはそれほど大事ではないかを 伝えることができます
WebView がアプリに重要な場合は
このAPIを見てみるべきです
どれが正しいボタンがわかってるんだよね
わかってるよ
アニメター特にAnimatorSetsに 長くリクエストされていた機能が２つあって
見かけによらず実装が難しかったので 少し時間がかかりましたが
Android Oでは AnimatorSetsで探索可能です
今Animatorがあったら それは子Animatorsのコレクション
これら子Animators内で AnimatorSet全体を探せます
いい機能ですね
またこんな機能も可能です
リバースです
チェット少し前に こういうAPIの実装しようとしてなかった？
- かもね - だよね
結局 誰がAPIを実装したの？
- 僕じゃない - そう
そうだよね
さてAnimatorSetの リバースのための新しい機能
機能的なので リスナーを取得したりとか
別のAnimatorSetを設定したり という必要がありません
面倒な作業はしなくてよいのです いいですよね
オートフィルは
情報を正しく何度も得るため 非常に面倒な作業ですから
これは前にキーノートで見ましたね
これは以下のことができる機能です―
入力フォームがすでにあり
情報提供者がいる
皆さんのテキストフィールドに
情報は自動入力されるということです
これには異なる側面が２つあります
１つは皆さんが独自のサービスを実装して その機能を提供できる
またはサービス内容により 私たちが代わりに提供する
一般的にはクライアントに 皆さんが実装するんですが
標準のビューでいいのです
TextViewや EditTextを使用しているなら
情報をどう受け取り サービスと交信するか
私たちにはわかっています
標準ビューには 何もする必要がありません
カスタムビューを使用している場合や
標準画面について より多くの情報を提供したい場合は
APIが何のバリュータイプか ヒントをくれると同時に
カスタムビューの詳細と それとの交信の仕方を伝えてくれます
またカスタムビューの階層があるなら―
階層下にビューを持つ 表層ビューがあったとして
SurfaceViewがあることしか わかっていない場合
APIが交信させたいバーチャルの階層を 伝えてくれるということです
金曜午前のセッションで これを詳しくお伝えしますので
オートフィルについて詳しく知りたい場合 そちらにご参加ください
テキストについてもう少しお話しましょう
テキストの領域では 今回たくさんの機能追加があります
これをリライトしましょう できましたね
このフォントを使う唯一の理由は ダンをやっつけられるからなんです
肉体的に痛めつける
すばらしい
彼壊れたよ
ではまず最初に
フォント情報を宣言するために XMLを使用して
データバインディングを伴うハック といったことが使えますが
これはちょっと難しいんです
なのでこの機能を皆さんに 提供すべきと考えそうしました
この新しいリソースフォントディレクトリに フォントファイルを直接配置できます
まさに「やったあ」ですね
それをディレクトリに入れてください
またはフォントファミリーを伝えてくれば
各スタイル情報を伴う 複数フォントを提供でき
他のリソースを使用できたように ディレクトリを使うことができます
皆さんはコードから そのリソースをくれと言うだけで使用できます
ダウンロード可能なフォント
今回備えた機能で
皆さんが使用したいフォントを宣言すると
システムになければダウンロードし キャッシュに格納するよう
あればキャッシュから 使用できるようにしてあります
コードかXMLからこれを行い リソースとして使用することができます
XMLフォントで 前のスライド上で行ったようにです
今後Playサービスでリリースする予定の フォントプロバイダーも備えています
今週カンファレンスで ベータ版が可能になります
詳しくはわかりませんが
詳細を学べるセッションがありますし
Playサービスのサイトで 詳細をご覧になれるはずです
これでGoogleフォント すべてにアクセスできます
標準のものから１つを使用するだけなら
このセッションの始めで使用した 美しいフォントのようなものも
そこにあるかもしれません 皆さんはサービスから直接要求できるのです
サイズ自動調整TextViewも可能です
典型的には TextViewをサイズ調整するとー
何が当たるかわからないよね
テキストだ
テキストはいいね 特にぴったりなフォントだと
今はビュー自体のサイズ調整をする ビヘイビアが左にあります
そこでフォントサイズは変わりません
でも右の サイズ自動調整TextViewを選択すると
フォントサイズが変更されます
皆さんがビヘイビアや 段階的に使用したいサイズや
特定のサイズを規定できます
そのためのAPIを備えています
XMLとJavaプログラミング言語コードの 両方にAPIがありますので
どうぞお使いください
こういったテキスト機能のために
XMLフォントやダウンロード可能なフォント サイズ自動調整TextViewがあります
これらすべて明日午前のセッションの 「Support Library最新情報」でお伝えします
なぜSupport Libraryの セッションかと不思議でしょう
OプラットフォームAPIではないのかと
そうなんですが
Support Libraryにも備えてあるんです
こういった機能すべてを 前のリリースに戻って使用できます
AccessibilityService ユーティリティです
AccessibilityServiceで書いているなら それは良いことで
活用できる新機能があります
言語検知
他のボタンと併せて ナビゲーションバーにボタンを配置でき
アクセスが容易になります
アクセシビリティボリュームに 別の音量コントロールがあるので
その音量をデバイスの 他の音量とまとめなくてすみますし
カスタムフィンガープリント ジェスチャも規定できます
詳細を学びたい方は
午後にアクセシビリティの セッションがあるのでチェックしてください
最後に私が好きなごく小さな変更の１つ
小さいと言うのは APIにはコード１行だからですが
実際は複数コード行が以前の実装に左右される コードすべてを修正しました
これは大きいものです
その価値を損ないたくはないですが
API面では本当に小さく隠れていて
外側からは同じように見えます
findViewById はかつて
public View findViewByIdと 宣言されていました
それを呼び出して リソースIDの中でパスを通して
ビューに戻って欲しいものに即座に キャストを行うという方法でした
TextViewでは その左と右両方に伝える必要があり
丸括弧があって
結構大変です
この見かけが非常に悪いので それを避けるため
人はヘルパーライブラリを使います
しかし現在はー
このようになりました
この機能をキャストアウェイと言います 私だけの呼び方ですが
僕の前のスライド消して それでいい
私はこれからご覧にいただく システムUIについて少しお話しします
アプリがあれば アダプティブアイコンを知る必要があります
ステフが先のスライドで 少し触れたようなことです
私たちは皆さんの時間とお金を 節約しようとしています
非常に多くの外部ランチャーがあって
それぞれが皆さんのアイコンの形に 異なる提案をします
アダプティブアイコンは Oで提供する新しいテクノロジーです
皆さんはこれが私の背景 これが私の前景と言って
好きな形に切り抜けるのです
なのでランチャーに丸や丸っぽい長方形や 何かひどいものがあっても
皆さんの好みにぴったり一致する アイコンが持てるのです
アダプティブアイコンについては たくさんの情報があります
木曜日の講演でお伝えしますので ぜひご参加ください
ではショートカットと ウィジェットについてお話しましょう
ランチャーは システムUIの一部ですから
以前はユーザー画面でショートカットと ウィジェットを取得するために
ショートカットには まあ機能するブロードキャストがあって
ウィジェットには
ランチャー内のウィジェットを 把握するにはユーザー頼りでした
Oではこうしたことの１つは
ユーザーのワークスペースで 行えるよう要求できるようになりました
ショートカットには Shortcut Managerを使い
ウィジェットには App Widget Manager を使います
ユーザーにはユーザーの机上に置くかどうか イエスかノーで決める機会があります
私は自分が置きたい場所に配置しますが
配置場所を見つけるよう伝えることもできます これは前のビヘイビアです
もうユーザーの手間をかける必要がありません
ダイアログに送るだけです とても便利です
ウィジェットで獲得する 新ユーザーすべてを見てください
リモコンが効かなかったんですが 拍手を待っていたんだと言っておきましょう
これに関しても木曜４時半にお話します
通知です 議題になるとおわかりだったでしょう
非常に便利です
関与に優れています
ユーザーは通知を非常に好みます
ちょっと制御不能かもしれません
現在 通知のストリームで 使われているものが多くあり
望むメッセージをユーザーに 届けるのはとても困難です
ユーザーも要求の流入を 管理するのが困難です
現在 制御不能であるなら 常にユーザーの制御下にあるべきです
それが始めから私たちの原則です
Jelly Beanでパッケージから 通知ブロック機能を追加しましたし
Nougatでは少し改良し 通知を抑える機能を追加しました
しかしこれでも ユーザーからもらう一番のリクエストは
アプリ通知のいくつかを ブロックしたいというもので
一方開発者からもらう一番のリクエストは
ユーザー側で私たちのアプリの通知を ブロックできないかというものです
同じことなんです 皆同じことを求めているのです
これが通知チャンネルの由縁です
Oの新APIです
チャンネルは１アプリからの複数通知を 名づけたカテゴリーで
すべて同じビヘイビアを共有します
バイブレーション／サウンド／ライト ／画面ポップアップ表示どれであれ
ユーザーはわかりやすく きめの細かいコントロールができます
これは１つのアプリで 各自の全チャンネルを皆さんが設定でき
Oのデフォルトビヘイビアを規定できます
プライベートメッセージが 表示されるはずです
タグは表示されないか 優先順位が低くなるかもしれません
ユーザーは通知を長押しするか 新しいスライド表示で
どのチャンネルがオンか把握でき
インラインで変更が行えるのです
一度Oを対象にしたらー
これは重要ですから 覚えていってください
すべての通知にチャンネルを 必ず使用しなければなりません
さもなくば落ちます
なのでOを対象にするまで
皆さんの通知システムを チャンネルに合わせ徐々に変えればいいです
一度Oに絞ると すべてチャンネル化する必要があります
ユーザー自身が満足できる 継続的経験を目指しているからです
デザインの考慮や ここで取り上げなかったコードや
いろいろな詳細含め 素晴らしいことをたくさん
明日4時半の講演でお伝えする予定です
システムUIには 他にもたくさん優れた点があります
ここにいくつか列挙しています また端が見えませんが
スライドの方が好みです
開発者プレビューのチェックや
ベータのインストール・試用を ぜひお勧めします
自信作です
新APIはアメリカの開発者向けなので
Strict Mode APIで拡張してあります
皆さんデバッグで使用されていると思います
今回ThreadPolicyで
バッファのないI/Oを 使用した時に警告を受けますので
バッファのあるストリームの１つにまとめず 入力／出力ストリームを使用した場合
フラッシュか何か ご自分で設定済みの警告を発します
VmPolicyではソケットを タグしない場合も警告を受けます
ソケットのタグはAndroid Studioを用いた トラフィックのデバッグにとても便利です
最後に別のインテントを開く場合
アプリ外にインテントを送って 許可を受ける必要がある場合も
警告を受けられます
使い方は非常に簡単です
以前のAPIのような外観です
メディアファイルアクセス
２リリース前ほどにご紹介した ドキュメントプロバイダーは
大きなドキュメントでない限り 非常に便利でした
大きなドキュメントの場合は
ドキュメントプロバイダーの ユーザーにそれを渡す前に
全データをダウンロードする必要がありました
今回から探索可能な ファイル記述子を作成できます
音声や動画やその他大きなタイプの コンテンツには非常に便利です
またとても使いやすいです
StorageManagerに行って ProxyFileDescriptorを開き
それにCallbackを与えると
バイト配列で データ量を要求するため
ドキュメントのサイズを要求する コールバックが呼び出され
いつそれを閉じるかを伝えてくれます
キャッシュデータです
これはシステムによって より良い市民になれる新APIです
各アプリはキャッシュ配分に利用できる 一定のデータ量を持っています
システムの容量が不足し 保管スペースが不足すると
キャッシュデータを削除し始めます
与えられた割当以下でいるなら
データ削除を避けられます
この目的に StorageManagerを使用できます
アプリに割り当てられている バイト数をクエリできます
時々クエリすべきです
というのは割当は使用量によって またはアプリの使用頻度によって
変化する可能性があるからです
そしてデータ配分したいとき allocateBytesを使えばいいのです
ご自分でできます
ファイルを作成して出力ストリームを 作成すればいいのです
これは遥かに良い方法です
allocateBytesを通るとき 必要に応じ
システムがあなたのデータに空きを作るため
他アプリのキャッシュデータを 削除するからです
これはgetCacheQuotaBytesが
デバイス上の空きスペースよりも 大きい可能性があることを意味します
setCacheBehaviorTombstoneを 使うこともできます
皆さんのアプリにとって便利です
一度もキャッシュされていないファイルと キャッシュ済みで削除されたファイルとの
違いがわかるからです
ビヘイビアを設定するとき
システムはキャッシュ内でファイルを削除して ファイルを切り捨てます
ファイルがまだあっても サイズはゼロにセットされます
これはキャッシュが システムに削除されたことを示します
最終的に利用できるスペースと 配分可能なスぺースは異なるのです
Androidのセキュリティにも このリリースで多くの機能が追加されています
話す時間があまりないので
Android Oでの新しいプライバシーに 関する同意事項の重要点をお話します
Android IDをご使用の場合 今回から
各アプリ各ユーザーデバイスで 異なるようになります
つまり同じデバイス上でのアプリ間の ユーザー追跡には使用できません
またnet.hostnameを取得するため システムプロパティにリフレクションするのは
無駄になります
また正しいコンテンツ連動広告を ユーザーに送れるよう
IDを広告している必要があると 言っている場合には
Playサービスの Advertising ID APIが適しています
Playでチェックしてください
Android IDは使用できません
行ってきた方法はもう信頼できません
WebViewのスライドが今見えませんが
もう１つWebViewでの 安全なブラウジングについてお話します
WebViewは半年ごとの Playストアおすすめなので
Lollipopまでさかのぼって 安全な閲覧機能を選ぶことができます
素晴らしいことです
講演の間に PlayのProtectが公表されましたが
以前より進んだ技術によるものです
しかしすべての可視性は与えられていません
私たちは常に人のため警戒しているからです
そのためPlayがあるどのデバイスでも Protectが有効になっています
Playをアップロード済みのアプリはすべて 各新バージョンに対して
事前にそして継続的に スクリーニングされています
またPlay Protect設定済みのアプリを インストールする度に
アプリもスクリーニングされます
他のストアから得たものであっても ADBでインストールしたものでもです
Protectは非常に良いです
Androidセキュリティには たくさんお話することがあります
渡されたスライドも多かったので 自分たちで話をしたらと
実際には言いませんでしたが
木曜２時半に
Androidセキュリティの 最新情報を聞いてください
Kernel以降のすべてが WebViewに追加され強化されています
言語とランタイムについては
皆さん発表を待ってますね
今朝Kotlinへの 公式サポートを発表しました
皆さんはステージ上のステフを 私は彼女が控えているのを見ました
彼女にI/Oで会ったら 感謝を伝えてください
ステフと全チームメンバーには 優れた業績がありますが
提供までには大変時間がかかっています
なので彼女に感謝を
チームすべてに伝わります
現在Android 3.0で利用可能です
オンラインにすでに多くの関連資料があります
Kotlinについては
皆さんや私たちへの利点など 長々お話できます
この講演を乗っ取りましょうか
- ありえる - ありえるし実際するよ
でもあいにくこのセッションには 時間がないからね
そこで代わりにこのステージに 金曜10時半に来てください
JetBrainsリードランゲージデザイナー アンドレ・ブレスラヴと
JetBrains開発者支援VPのハディが
「Kotlinへのご案内」の講演をします
そして午後にはステージ４で
「Life is Great and Everything Will Be OK, Kolin is here」と題した講演を
PinterestからのChristina Leeと SquareからのJack Whartonが行います
これは私たちにとって重要です Kotlinを提供した理由は
皆さんのコミュニティが Kotlinを使用しているからです
私たちは皆さんが欲しいものを 聞いてお届けしているのです
皆さんとコミュニティにステージ上で 私たちより優れた講演をして頂く目的です
またご質問はAndroid［不明瞭］ プラットフォームブースの
Developer Sandboxでどうぞ
今日は３時から４時まで 木曜は２時から４時まで
金曜は正午から２時までです
ランゲージデザイナーのアンドレが そこで質問のすべてにお答えします
Kotlinの詳細のためにお越しください
そこで質問してください
ステフがお伝えしたように 他の言語にも投資しています
Javaプログラミング言語 CとC++もあります
Javaプログラミング言語には
Android Oで 新パッケージを追加しています
java.timeを備え ついに時間と日付の操作が楽になりました
旧来のAPIと比較し ずっと合理的になっています
- 時間が重要 - そう時間が重要
java.nio.fileも提供しています
古き良きjava.io.file APIへの改良です
これでファイルの属性にアクセスできます
ファイルのパスと読み込みの操作も 楽になります
例を見ましょう
３つ目にjava.lang.invokeです
これはリフレクションへの バリエーションです
これは全体に似ていますが 非常にいいです
アプリの中でtransform wrapメソッドを扱えるからです
これが例です パスの取得にパスクラスを使用できます
そしてfiles.linesを呼び出すと
ファイルの全コンテンツを読み込みます
皆さんが取得するのは １つのストリームだけです
この例では レンダーとストリームAPIを使用して
空の行ナンバー記号で始まる行の すべてを除去しています
そして最後にすべてを集めて 単一のストリームに戻します
以前よりもずっと簡単です
ランタイムにも変更があります
今朝そのいくつかを聞きました
今週あとで詳細をお伝えします
新しい同時コピーコレクタにより すべてが基本的に速く良くなっています
同時コピーはフルGCがある場合を除き 停止時間なしを意味します
なので他のことをしている間に 背景でしなければならないことを行えます
特にとても良い機能の１つは
前景でヒープを圧縮することです
私の記憶では前回のリリースで ヒープを圧縮できるようになりましたが
とても良いです
最適化できますし ヒープを小さくできます
割り当てて収集を速くできますが
これを行えるのは アクティビティが背景にある場合のみです
アイドル状態に入ると その状態にあるときそれを行いましたが
前景にあるときは
ヒープの拡張と断片化については 何もできませんでした
今回から前景で集めて 前景で最適化できます
すべてが速くなりました
割り当てにも新しくより速い メカニズムがあります
Bump the pointer allocationを 行えばいいだけなので速くなりました
収集も速くなりました
こうしたことで 作業の負担が減りました
より速い割り当てと 収集というのは
OのリリースでARTを使用することにより
ガベージとメモリへの対処が 非常に速くなったことを意味します
多種の最適化があります ループ展開やインライン展開
注意事項は
Dalvikがメモリタイプの制限で 作成されたことです
Dalvikでは メモリの節約がすべてなので
つまり最適化を多く行えるのみで
最適化に関しては 手詰まりという感じです
ARTがオンラインに登場したとき
基本的に将来最適化を構築できる プラットフォームに配置しました
Oと将来のリリースを含む 各リリース時に受ける利益を
私たちは今受け始めていて 将来より多くが可能になるのです
その利益の多くが 今回のリリースにあります
詳しくは今週の後の セッションをチェックしてください
DEX localityもあります
これは特にアクティビティの ローンチタイムを改善します
同じスペースで メモリすべてを収集できるからです
アプリが起動時のアクセスが 容易に速くなります
金曜朝のセッションがあります パフォーマンスとメモリ改善です
詳しくはそこでチェックしてください
プラットフォームの他にも Support Libraryもあります
Oリリースに関してだけでなく デリバリーに対する他のメカニズムもあります
いくつか例をあげましょう
v26 ベータが 開発者プレビュー２でリリースされます
テキスト、XMLのフォント、 ダウンロード可能なフォント
サイズ自動調整TextView
すべてv26ベータにあります チェックしてください
さらにEmojiCompatがあります
絵文字での大きな問題の１つは
過去にリリースされた 実行中の絵文字ではない
その後の絵文字を 友だちが送ってくると
こうした絵文字は見ることができず
豆腐のような四角しかみえないことになります
あまり意味はなくても 比較的魅力ある絵文字の方がいいです
なのでデバイスで更新された絵文字を 取得できたらいいですよね
アプリが更新された絵文字を取得できる メカニズムが２つあります
１つはアプリが更新済み絵文字と 実際まとめられる方法
ユーザーがタイムリーに 絵文字アップデートを得られるよう
Playストアとユーザーに対して アプリを更新できます
もう１つはおそらく 長期的解決策としては良い方法で
先のダウンロード可能なフォントを 提供できるサービスを使います
ダウンロード可能なフォントを通じて
更新されたフォントを 自動的に受け取れるんでしたよね
私たちがサービスに組み込んだように 更新された絵文字を取得するため
ダウンロード可能なフォントの機能を 利用してアプリをビルドできます
これに関する詳細は明日朝の
「Support Library最新情報」に ご参加ください
アニメーションにも 先にお話したAnimatorSetに加え
多くの機能を追加しています
物理学ベースのアニメーション機能を 今回備えてあります
アニメーションフォームで見たければ
速度で動かすアニメーションが 可能になったのです
旧来のプラットフォームの アニメーションの機能は
デュレーションの観念で動いていました
皆さんが実行の長さを伝えるものでしたが
アニメーションの多くは 速さで操作したいでしょう
特にユーザーインターラクションにより 操作するアニメーションは
画面で何かをドラッグしていて離すとき
ドラッグしてしていたのと 同じ速さで指から離れたらいいですよね
フリング、スクロールといったものは
アニメーションシステムベースと比べて 非常に速度を要求します
アニメーターとそれを行えますが 面倒な作業です
数学が必要で 数学は難しい
なので私たちがその機能を織り込んで
新しい物理アニメーションシステムにしました
より自然でより相互作用的 より割り込み可能です
ユーザーとの双方向性モデルで動作するよう 設計されているからです
デモをご覧ください
上部の丸をドラッグすると
他の２つの丸も上部の丸にくっついて 規定した弾力上を動きます
空間の中を追います
ロックステップの追従ではないですが
基本的にくっついている 弾力アーチ上にあります
そして即座に双方向性と 物理学ベースの弾力の概念を役立てます
金曜午後にこの新しい物理学ベースの アニメーションについて講演があります
詳しくはご参加ください
アーキテクチャ コンポーネント
キーノートでお伝えしました
ときにAndroid開発は 必要以上に少し難しいかもしれません
そこで一歩下がって アプリ開発者のために
簡素化を試みるためもう一度 努力すべき重要な問題かを自問しています
そして今あるいはライフサイクルで 特に努力していることが２つあります
画面を回転させるか それが背景で行くか何かしたときに
アクティビティが機能停止するという 事実に対処するのは困難です
また今いる状態を正確に把握することは 少し面倒でもあります
それはすべてのアプリ開発者が 対処する必要がある進行中の課題です
私たちはそれを簡単にするため 別のアプローチを取ってきました
加えてこれまで持続性も見てきました
今は生SQLを発行できますが
それがシステム上得ているほぼすべてです
その機能にビルドする 新しい方法があります
より簡単で強力です
今週こういったことのすべてを お伝えします
アーキテクチャコンポーネント案内に ご参加ください
今日午後です
というかこのセッションの直後です
明日朝には
ライフサイクルの課題の１つと 解決方法を取り上げます
持続性とオフラインに関してもお話します
そしてこれらはすべて 前回のリリースフォームでお試しいただけます
チェックしてみてください
皆さんの開発者ライフを 楽にしてくれると思います
いくつかのビヘイビア変更があります 他のこと以上に注意すべき点もあります
背景アプリ特にロケーションで ビヘイビアに変更がいくつかあります
背景アプリとして実行しているなら
きめの粗い位置情報だけを取得します
これらは困難にするために 行われているのではなく
デバイスを良くするために行われています
すべてのアプリが すべての機能をいつも持っていて
必要なことやしたいことをいつでも行えると
基本的にバッテリーは低量になります
常時誰もが働き過ぎになるからです
そこでどのアプリがどのときに サービスを実際必要としているか
私たちが判断を試みて
ユーザー経験が遥かに 良くなるようにしています
皆さんのユーザーの経験も 遥かに良くなります
この１つはロケーションにあります 背景にいるときのきめの粗い情報です
もう１つはウェイクロックです
アプリが背景ステートに行き キャッシュステートに行ったとき
ウェイクロックになるのが 一般的だと気付きました
それがウェイクロックを 長時間キープし得るのです
これは電力消費量を下げます
今回からは キャッシュステートに行ったあと
ウェイクロックが 自動的に解放されます
デバイスは不適切なステートになりません
実行には制限があります
背景で作動している場合です
警告ウインドウにも変更があります
特にTypeApplication Overlayという 新しいタイプのウインドウがあります
O SDKを対象にしていて 警告ウインドウの機能を持ちたいなら
このウインドウタイプを 使用しなければなりません
初期リリース状態にあるなら これはありませんでしたし
これは使いません
使用しているウインドウタイプが何であれ
この型のアプリのオーバーレイウインドウの 下に重ねられることに注意してください
今はより明らかに規定された レイヤーポリシーがあるからです
これについては 詳しくは午後５時からの
バックグラウンドチェック 他情報についての講演でお伝えします
詳細をすべて知りたい場合は ぜひご参加ください
最後にこれに戻ってくることを 約束しましたよね
- した - おまけだね
よし
ではお話しましょうー
ドラムロールいるんじゃない？
太ももたたきで
脚でドラムロールくださいね
よし
いい音だね
残念ながら時間ないんだよね
Oの意味は―
「おおだめだ 時間がきた」
ありがとう