パフォーマンスに重大な影響を及ぼす可能性があるバッファリングなしで、アプリがデータの読み取りまたは書き込みを行うタイミングを検出します。アプリの外部でアクティビティを開始するときに、アプリが誤ってパーミッションを別のアプリに付与しなかったタイミングを検出します。トラフィックを実行するタイミングを検出します。データ関連のガイダンスと動作が改善されます。スペースが割り当てられるようになりました。ファイルを最初にアプリから削除します。ファイルは、必要に応じて消去されるが、システム上に最後まで残るものの一部となります。ファイルを決定するときは、(変更時刻で判別される)最も古いファイルの削除を最初に検討します。つの新しい動作も用意されています。使用すると、単一のアトミック単位として削除する必要があるディレクトリとそこに格納されているすべてのコンテンツを明示できます。バイトに切り詰める必要があることを明示できます。使用することをお勧めします。ファイルを自動的に消去します。データをデベロッパーに代わってシステムが検討するからです。ページずつ読み込む操作がサポートされるようになりました。数千枚の画像が登録された写真アプリでは、データのサブセットを取得するクエリを発行してページを表示できます。オブジェクトとして返します。この機能を使うには、クライアントとプロバイダの両方でページングを実装します。メソッドが含まれるようになりました。このメソッドにより、クライアントが要求した情報が最新であるかどうか、簡単に把握できるようになりました。コンテンツの更新ロジックを追加できます。これはプロバイダのクライアントに対し、データの更新を自分自身で試みたことを示します。呼ばれます)を呼び出すことで、更新されたコンテンツを明示的に要求できます。呼び出す必要があります。明示的に要求するスワイプして更新する操作に対応するためです。JobSchedulerに対し多くの改善を実施しています。レシーバーの代わりに、スケジュールされたジョブを使うことができるので、アプリは新しいバックグラウンド実行制限を遵守しやすくなります。キューをスケジュールされたジョブに関連付けられます。ワークをジョブのキューに追加するには、JobScheduler.enqueue()を呼び出します。ジョブの実行中に、保留中のワークをキューから外し、処理を行います。サービス(特に、IntentServiceを実行するサービス)の開始を必要としていた多くのユースケースを処理できます。今後は、JobInfo.Builder.setClipData()を呼び出し、ClipDataをジョブと関連付けることができます。パーミッションの供与をジョブと関連付けることができるようになります。これは、パーミッションをContext.startService()に伝播する仕組みと似ています。パーミッション供与を使うこともできます。スケジュールされたジョブは、新しい制限をサポートします:JobInfo.isRequireStorageNotLow()利用できるストレージが少ない場合、ジョブが実行されません。JobInfo.isRequireBatteryNotLow()バッテリー残量が閾値以下の場合、ジョブが実行されません。ダイアログを表示します。NETWORK_TYPE_METEREDジョブを実行するには、一般的なセルラーデータプランのような、メーター制ネットワーク接続が必要です。データベースに保存している場合、または設定がデバイス固有の場合に有効です。ストアをご覧ください。戻すようになりました。この変更により、次の影響があります。既存のコードにあいまいな戻り値が生じる可能性があります。呼び出しの結果となるなどです。明示的なキャストが必要となります。)には、戻り値をアップデートする必要があります。フェイドといった、小規模な自動ボリューム移行を実行するために利用できます。アウトプットを共有しています。アプリは、再生の開始や停止を行ったり、ボリュームを絞ることにより、フォーカスの変更を処理します。AudioFocusRequestに新たなクラスができました。フォーカスへの変更を処理するための新機能を実装することができます。オブジェクトを返します。このオブジェクトは、属性と値のマップです。メソッドは、以下のメディアクラスで定義されています。MediaPlayer.getMetrics()MediaRecorder.getMetrics()MediaCodec.getMetrics()MediaExtractor.getMetrics()メトリクスは各インスタンスで別々に収集され、インスタンスの有効期間中は存続します。実際に返されるメトリクスは、クラスによって異なります。クラスにいくつかの新しいメソッドが追加されています。これらのメソッドは、次の複数の方法でアプリのメディア再生処理を改善します。サンプルレベルの暗号化がサポートされるようになりました。フォーマットがサポートされるようになりました。ストリームと動画ストリームを処理できるようになりました。つの動画トラックに制限されなくなりました。使用して、必要な数のトラックをミキシングすることができます。トラックを追加することもできます。メタデータのフォーマットはアプリによって定義されます。コンテナのみでサポートされます。メタデータはオフライン処理に有効です。センサーからのジャイロ信号を使用して、動画を安定化させるための処理を実行できます。フォーマットの先頭がプレフィックス「application/」である必要があります。データの記述と同じです。トラックと同じタイムベースに属している必要があります。フォーマットを示します。端末が音を生成する方法について、クエリおよびリクエストができます。オーディオ再生に対する以下のようなコントロールにより、望ましい端末条件下でのみ、音声を再生することが簡単になります。アシスタント向けの新しいオーディオ使用タイプAudioAttributesクラスは、新しい音声タイプである、USAGE_ASSISTANTを含みます。アシスタントが端末上で音声によって与える回答に対応しています。オーディオ設定がアクティブの場合にのみ、音声を再生したい場合には、AudioManagerクラスを使って、AudioManager.AudioPlaybackCallbackのインスタンスを登録します。このonPlaybackConfigChanged()メソッドにより、現在アクティブなオーディオ属性を特定することができます。フォーカスのより詳細なリクエストを送信することができます。AudioFocusRequest.Builderを使って作成したAudioFocusRequestオブジェクトをパスインします。クラスでは、次のオプションを指定できます。AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCKなど、取得したいフォーカスのタイプ。サービスがデバイスのフォーカスを得た場合、サービスの音量を絞るか、オーディオを完全に停止するか。デバイスの準備ができるまで、フォーカスの取得を遅らせるかどうか。注:AudioFocusRequestのインスタンスをビルドする際に、setAcceptsDelayedFocusGain()を呼び出して、サービスが音声の再生を遅らせることができるようにした場合、サービスがいつ音声の再生をすればいいかがわかるように、setOnAudioFocusChangeListener()も呼び出す必要があります。公開できるようになります。これで、データソース内のファイルへのアクセス権を他のアプリに提供できます。Protocol(MTP)のようなプロトコルを使用するファイルへのアクセス権も提供できます。ファイルにアクセスする場合、いくつかの課題があります。プロバイダからファイルへのシーク可能なアクセス権を必要とします。ディスクリプタを作成する必要があります。ディスクリプタのないファイルを再生できません。プロバイダがファイルのダウンロードを終えるまで再生を始めることができません。トラバースする必要があります。パターンにより、—移動、コピー、削除—といったメディアに対する一括操作の速度が大幅に遅くなります。ドキュメントの場所を特定することができません。ファイルの保存場所を選択できなくなるという問題が生まれます。フレームワークを改善することにより、これらの問題に対応しています。ディスクリプタを作成できます。ディスクリプタを取得するためにファイルを開くことができます。プロバイダに提供します。プロバイダから戻ります。メソッドを呼び出す必要があります。オブジェクトをコールバックとして受け入れます。アプリケーションがファイル操作を実行するたびにコールバックを呼び出します。ツリーをトラバースすることなく、直接ドキュメントにアクセスすることができます。マネージャのファイル操作にかかる時間を大幅に短縮することができます。ファイルの位置を特定するものであり、アプリにファイルへのアクセス許可を与えるものではありません。ファイルへのアクセス許可を得る方法については、参考文書をご覧ください。システムからのパスを決定できます。このメソッドは、DocumentsContractクラスおよびDocumentsProviderクラスの両方で利用可能です。メソッドは、このパスをDocumentsContract.Pathオブジェクト内で返します。対して最も頻繁に使われているパスを返します。この機能は、以下のような場合に特に有用です。アプリが、特定のドキュメントの位置を示す「名前を付けて保存」ダイアログを使う場合。アプリが、検索結果ビューでフォルダを表示し、ユーザーがそのあるフォルダを選択した時に、そのフォルダ内にある子ドキュメントをロードしなければならない場合。アプリが、パスにあるドキュメントの内の一部に対するアクセス許可しか持たない場合、findDocumentPath()で返される値には、アプリがアクセスできるフォルダとドキュメントしか含まれません。サポートが追加されています。経由で近くの端末を検出して通信できるようになります。パートナーと連携して作業を進めています。サポートを強化します。