JellyBeanで変更・非推奨となったメソッド・定数をいくつか抜粋。
●コンテンツの変更通知 -ContentObserver-
今までは監視したいURIの数だけObserverを用意する必要がありました。JB以降は変更されたコンテンツURIも同時にObserverへ通知されるので、Observerを複数用意する必要がなくなります。
・android.database.ContentObserver.dispatchChange(boolean)
非推奨となりました。
代わりにandroid.database.ContentObserver.dispatchChange(boolean, Uri)を使いましょう。
・android.database.ContentObserver.dispatchChange(boolean, Uri)
新規追加のメソッドです。
引数Uriは変更のあったコンテンツのURIを指定します。
・android.database.ContentObserver.onChange(boolean, Uri)
新規追加のメソッドです。
監視しているコンテンツに変更があった場合に呼ばれます。
引数Uriは変更のあったコンテンツのURIになります(nullの場合は"不明"を意味します)
JBより古い環境で互換性を維持したい場合、onChange(boolean)をオーバーライドする必要があります。
// Implement the onChange(boolean) method to delegate the change notification to // the onChange(boolean, Uri) method to ensure correct operation on older versions // of the framework that did not have the onChange(boolean, Uri) method. @Override public void onChange(boolean selfChange) { onChange(selfChange, null); } // Implement the onChange(boolean, Uri) method to take advantage of the new Uri argument. @Override public void onChange(boolean selfChange, Uri uri) { // Handle change. }
●データベース関連
メンテがちらほら。acquireUnstableContentProviderClientは何気に影響範囲の広い修正です。
⇒「Android:JellyBean以降のContentResolver.queryの挙動」
・android.database.Cursor.deactivate()
非推奨となりました。
requery()が既に非推奨化されている(Honeycombからだったかな?)ので、これも非推奨です。
requery()の非推奨化時の忘れ物かな?
・android.database.sqlite.SQLiteOpenHelper.setWriteAheadLoggingEnabled(boolean)
新規追加のメソッドです。
WALの有効/無効指定です。
引数booleanがtrueならenableWriteAheadLogging()、falseならdisableWriteAheadLogging()が実行されます。
・android.content.ContentResolver.acquireUnstableContentProviderClient(Uri)
・android.content.ContentResolver.acquireUnstableContentProviderClient(String)
新規追加のメソッドです。
信用できないContentProviderに対するクライアント(ContentProviderClient)を取得します。
過去の記事でも取り上げました。
⇒「Android:高速化。ContentResolver?ContentProviderClient?」
●クエリ/リクエストのキャンセル -CancellationSignal-
コンテンツへのクエリがキャンセルできるようになりました。これにより、コンテンツをロードするLoaderとそのサブクラスも同時に拡張されています。
また、"オペレーションのキャンセル"という抽象的な例外クラスOperationCanceledExceptionが追加されました。
クエリやローダをキャンセルした際にスローされるOperationCanceledExceptionにも注目です。
・android.content.ContentResolver.query(Uri, String[], String, String[], String, CancellationSignal)
新規追加のメソッドです。
cancellationSignalが指定できるようになり、クエリを中断することができます。
cancellationSignalについては追々調査。
・android.content.AsyncTaskLoader.cancelLoadInBackground()
新規追加のメソッドです。
ローダの処理をキャンセルします。
cancelLoadInBackgroundはloadInBackground()処理が走っていない、あるいは既に終了している場合N.O.Pとするのが通例です。
・android.content.AsyncTaskLoader.isLoadInBackgroundCanceled()
新規追加メソッドです。
ローダがキャンセル処理を受け付けたかどうかを確認します。
・android.content.Loader.registerOnLoadCanceledListener(OnLoadCanceledListener<D>)
新規追加メソッドです。
ロード処理のキャンセルをlistenするリスナーを登録します。
・android.content.Loader.unregisterOnLoadCanceledListener(OnLoadCanceledListener<D>)
新規追加メソッドです。
ロード処理のキャンセルをlistenするリスナー登録を解除します。
・android.content.Loader.cancelLoad()
新規追加メソッドです。
ロード処理のキャンセルを試みます。
・android.content.Loader.deliverCancellation()
新規追加メソッドです。
OnLoadCanceledListenerへのキャンセル通知を行います。
・android.content.Loader.onCancelLoad()
新規追加メソッドです。
Loaderのサブクラスは、このメソッドをオーバーライドしてロード処理のキャンセル要求(cancelLoad)に応えます。
●その他
・android.content.res.Configuration.ORIENTATION_SQUARE非推奨となりました。
⇒過去の記事で取り上げています「画面の向き:ORIENTATION_SQUARE」
・android.view.ActionProvider.onCreateActionView ()
非推奨となりました。
代わりにandroid.view.ActionProvider.onCreateActionView(MenuItem)を使いましょう。
JBより古い環境をサポートしたい場合は、このメソッドをオーバーライドして、有効なActionViewを返します。
・android.view.ActionProvider.onCreateActionView(MenuItem)
新規追加のメソッドです。
JB以降はこのメソッドでActionViewを生成することが推奨されます。
以上です。