Android变量优化

时间:2013-08-09 12:23:49

标签: android optimization

我想优化我的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{
   ...
}

哪个选项使用的资源较少?全局变量还是本地? (我的程序每秒调用此函数)

2 个答案:

答案 0 :(得分:1)

假设第二个选项使用例如成员变量,它甚至不会工作。您需要致电setContentView(),例如在onCreate()之前调用findViewById()并在onCreate()运行之前执行成员变量初始化。

所以第一个更好,因为它有效,而另一个没有。

除此之外,在这个层面上,这种气味不必要的微优化。如果您遇到性能问题,可能是其他地方。

相关:如果您想优化findViewById()次来电,例如在适配器中,相同的视图被一遍又一遍地回收,google for" android viewholder"。

答案 1 :(得分:1)

一般来说,第二种选择更好。如果您的视图层次结构很复杂,findViewById()可能相当昂贵。最好调用一次并存储结果,而不是重复调用它。