android - 在 android 上的声明中从资源设置字段

标签 android

这样的代码有什么问题吗?

public class SomeClass extends View {

    private final float someFieldVariable = getResources().getDimension(R.dimen.someVariableValue);

    ....

}

最佳答案

我认为这是危险的代码。

上下文在调用 super 构造函数时连接。 someFieldVariable 的初始化取决于上下文,可能在调用 super 之前完成。

因此,有可能由于编译器不够智能而导致上下文未连接,然后您的初始化将因未捕获的异常而失败。这将导致您的应用程序崩溃。

即使它有效,我认为依赖编译器如何工作也是一种不好的风格。 您应该在构造函数中对其进行初始化,以确保之前已调用 super-connstructor 或仅在需要时从资源中获取值。

我也认为定义一个局部变量来保存资源值并没有太大的优势。这就像定义一个变量来保存另一个变量,这个变量甚至是 final。如果您经常需要该值并且每个处理器周期都很重要,那么这是合理的。

关于android - 在 android 上的声明中从资源设置字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19700467/

相关文章:

android - 如何在android中的按钮中存储元数据?

android - 无法检查对话框是否显示

java - android.support.v7.internal.view.menu.ActionMenuItemView 无法转换为 android.widget.Button

java - 安卓Java : best practice for common code in overrides for all Activities

java - Android - 时钟滞后

java - 无法解析符号 'Cucumber'

android - 在 Android 3.0+ 中使用 android.app.Fragment 和 ViewPager

android - 无法从 sqlite 表中删除列 [Android]

Android - 如何在启动后在/sdcard 上启动应用程序

android - 如何处理为旧版和新版 Android 实现不同的 API?