传递Context或使用view.getContext真的有关系吗?

问题描述

因此,我有两个选择来获取context。请参见实用程序类中的以下两种方法(为清晰起见,进行了清理)。

public static void oncopyClicked(Context context,ImageView copy){
    copy.setVisibility(View.GONE);
    Intent intent = new Intent(context,NextActivity.class);
    context.startActivity(intent);
}

public static void oncopyClicked(ImageView copy){
    Context context = copy.getContext();
    copy.setVisibility(View.GONE);
    Intent intent = new Intent(context,NextActivity.class);
    context.startActivity(intent);
}

我可以传递上下文,也可以直接从视图中获取上下文。我猜我更喜欢第二个参数,因为它要传递的参数要少一个,但是我想知道getContext()调用是否昂贵。我不是在尝试微管理我的代码,而是在尝试遵循最佳实践(如果存在这种情况)。

解决方法

您可以使用第二个选项。

getContext()上致电View并不昂贵。创建context时,View引用将被保存,而getContext()方法将返回该引用。

检查View的{​​{3}}和constructor source code