我需要在我的片段中多次使用上下文:
...
account.restore(getContext());
...
dbHelper = new DBHelper(getContext());
...
DiskLruBasedCache.ImageCacheParams cacheParams = new DiskLruBasedCache.ImageCacheParams(getContext(), "CacheDirectory");
...
mImageLoader = new SimpleImageLoader(getContext(), cacheParams);
...
Toast.makeText(getContext(), "err: " + error, Toast.LENGTH_LONG).show();
...
RecyclerView.LayoutManager layoutManager = new CustomLayoutManager(getContext());
...
或者我应该初始化它一次,然后再使用它。
最好的方法是什么?
发布于 2017-10-11 01:23:26
这主要是一个偏好问题。您可以在需要的任何地方调用getContext()
--不必担心性能开销。或者,您可以在onCreate
方法中分配一个private Context context
字段。或者,如果某个特定方法有多个用途,则创建一个局部变量。
如果getContext
可能很慢,那么您肯定应该将它隐藏起来,但它实际上只是一个简单的访问器(几乎--它在内部做了一点间接的操作)。
使用你认为最具可读性的内容。
发布于 2018-06-20 03:42:35
在这种情况下,最好调用它一次并使用它。这是因为没有外部函数调用,执行速度会更快。我们通常会看到
Context context = getContext();
我已经这样做过很多次了,并将其存储到类中的一个变量中。在这种情况下,它看起来像这样:
class SomeClass {
Context context;
@Override
void onCreate(){
context = getContext();
}
}
https://stackoverflow.com/questions/46671950
复制相似问题