按int号获取资源

时间:2013-08-24 23:42:46

标签: android android-resources

我有时会在Android源代码中看到此声明:

mContext.getString(2131361954);
Notification n = new Notification(2130837696, "123", System.currentTimeMillis());

// Example code - does not match together

我认为数字是该项目的一些资源,对吧?为什么有时人们使用这个数字而不是使用R类?它更快还是其他什么?

如何检查分配给这些数字的资源?如果我只有文件或这个数字是随机的,是否可以获得使用的数字?也许使用文件名或文件的MD5哈希值?

1 个答案:

答案 0 :(得分:3)

没有性能差异,因为R类的所有成员都是静态的和final的,并且在编译期间直接交换。这相当于使用R.x.y的任何代码,因此性能相同。

我强烈建议不要直接在项目中使用这些数字,因为它们可能会在添加,删除和修改资源时发生变化。

您可以通过将该数字转换为十六进制来检查该数字所对应的资源,打开R.java文件并搜索该十六进制数并查看其分配的内容。

您还可以使用getResources().getResourceEntryName(int resid);并在运行时将ID传递给它以检索文件名。