我想优化我的Android应用程序,但我不知道哪个更好?
第一个选项:
public void function()
{
RelativeLayout rl = (RelativeLayout)findViewById(R.id.activity);
ImageView img = (ImageView)findViewById(R.id.image);
...
}
第二个选项:
RelativeLayout rl = (RelativeLayout)findViewById(R.id.activity);
ImageView img = (ImageView)findViewById(R.id.image);
public void function{
...
}
哪个选项使用的资源较少?全局变量还是本地? (我的程序每秒调用此函数)
答案 0 :(得分:1)
假设第二个选项使用例如成员变量,它甚至不会工作。您需要致电setContentView()
,例如在onCreate()
之前调用findViewById()
并在onCreate()
运行之前执行成员变量初始化。
所以第一个更好,因为它有效,而另一个没有。
除此之外,在这个层面上,这种气味不必要的微优化。如果您遇到性能问题,可能是其他地方。
相关:如果您想优化findViewById()
次来电,例如在适配器中,相同的视图被一遍又一遍地回收,google for" android viewholder"。
答案 1 :(得分:1)
一般来说,第二种选择更好。如果您的视图层次结构很复杂,findViewById()
可能相当昂贵。最好调用一次并存储结果,而不是重复调用它。