@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.legalInformationLL:
startActivity(new Intent(AboutActivity.this, LegalInformation.class));
break;
case R.id.backIB:
finish();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
对于此代码“资源 ID 在 Android Gradle 插件版本 5.0 中将是非最终的,请避免在 switch case 语句中使用它们”警告出现。可能的解决方案是什么?如果我将此代码更改为:
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.legalInformationLL) {
startActivity(new Intent(AboutActivity.this, LegalInformation.class));
} else if (id == R.id.backIB) {
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
警告消失;但与 if 语句相比,switch 语句的性能更好。那么有什么可能的解决方案可以更快地有效工作呢?
Per*_*abs 77
出现问题是因为 ADT 14 资源标识符不再是最终的。
请参阅下一个链接,其中 Google 声明使用“if/else”条件作为替代:
http://tools.android.com/tips/non-constant-fields
话虽如此。在性能方面,“switch”语句的性能可能比“if/else”条件更好。
但是,就您而言,您不会获得或失去性能或效率。
对于可能需要高效率的更具体的边缘情况,例如渲染循环或注重效率的算法,必须考虑“switch”语句可能提供的性能类型。
对于您的用例,使用“if/else”条件是一个很好的解决方案,没有效率问题。
归档时间: |
|
查看次数: |
23704 次 |
最近记录: |