1

アプリにフラグメントを実装しています。Honeycombよりも低いAndroidバージョンとの互換性を保つために、私はサポートライブラリを使用しています。しかし、私は疑問に思っていました。Androidは非常にスマートなので、アプリがHoneycomb以降で実行されているときに、サポートライブラリメソッドを適切なフレームワークメソッドに変更しますか?いいえの場合、下位バージョンのサポートライブラリメソッドと上位バージョンのフレームワークメソッドを使用する方法はありますか?

4

1 に答える 1

1

サポートライブラリは、古いバージョンのAndroidとの下位互換性が確保された元のフレームワークに他なりません。古いフレームワークで利用できる新しいAPIはないため、アプリが実行されている現在のAndroidバージョンを常に比較し、それに応じて、カスタム実装またはネイティブ実装を使用します。サポートライブラリの例:

final int version = android.os.Build.VERSION.SDK_INT;
        if (version >= 17) {
            IMPL = new JbMr1ViewCompatImpl();
        } else if (version >= 16) {
            IMPL = new JBViewCompatImpl();
        } else if (version >= 14) {
            IMPL = new ICSViewCompatImpl();
        } else if (version >= 11) {
            IMPL = new HCViewCompatImpl();
        } else if (version >= 9) {
            IMPL = new GBViewCompatImpl();
        } else {
            IMPL = new BaseViewCompatImpl();
        }

次のスクリーンショットに示すように、サポートライブラリは、Androidのバージョンごとに不足しているAPIを補うようにカスタマイズされています。

ここに画像の説明を入力してください

Githubにミラーリングされたサポートライブラリのソースコードを見つけることができます: https ://github.com/android/platform_frameworks_support

于 2012-12-13T18:53:40.247 に答える