2

次のようなコード:

    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD)
        ed.apply();
    else ed.commit();

Froyo で警告を生成します。

04-27 03:40:35.025: W/dalvikvm(3138): VFY: インターフェイス メソッド 219 を解決できません: Landroid/content/SharedPreferences$Editor;.apply ()V

ただし、古いデバイスでは、これはアプリケーションを中止する RuntimeError になることを理解しています (こちらこちらを参照)。

API 8 (Froyo) 以降で条件付きで新しい API (メソッド) を呼び出すこの方法は安全ですか、それとも遅延読み込みがまだ必要な場合がありますか?

これを可能にした Dalvik の変更点は何ですか?

関連している

4

1 に答える 1

4

Froyoで警告を生成します

これは完全に正常です。

しかし、古いデバイスでは、これはアプリケーションを中止する RuntimeError になることを理解しています

Android 1.x の場合、はい。

API 8(Froyo)以降で新しいAPI(メソッド)を条件付きで呼び出すこの方法は安全ですか

はい。

これを可能にした Dalvik の変更点は何ですか?

未識別のシンボルに遭遇したときに「すぐに失敗」することはなくなりましたが、代わりに、ステートメントが実行されたときにそれを解決するために再試行するのを待ちます。SDK_INTステートメントが実行されていないことを確認して確認することで、クラッシュすることはありません。

于 2013-11-28T17:18:37.020 に答える