Android如何解释布局中的@null关键字?

时间:2016-09-20 09:32:50

标签: java android

我正在挖掘Android的来源,寻找系统如何识别布局中提到的 @null 关键字的答案。例如,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:background="@null"
          android:layout_width="match_parent"
          android:layout_height="match_parent"/>

到目前为止,我遵循了这条路线:

  1. TypedArray#getDrawable(int index)
  2. ResourcesImpl#getValue(@AnyRes int id, TypedValue outValue, boolean resolveRefs)
  3. AssetManager#getResourceValue(@AnyRes int resId, int densityDpi, @NonNull TypedValue outValue,boolean resolveRefs)
  4. AssetManager#loadResourceValue(int ident, short density, TypedValue outValue,boolean resolve)
  5. 我试图在source code中找到 AssetManager loadResourceValue方法的JNI实现,但我还没有成功。

    如果有人能指出Android如何解析@null标签,我将不胜感激。

    提前致谢!

1 个答案:

答案 0 :(得分:1)

您在通过NDK公开的AssetManager前端搜索。根本没有JNI功能。 android.util.AssetManager的JNI包装器为here

ResTable类用于实际解析和解析。如果你深入挖掘一下 - 你可以找到处理@null的{​​{3}}。