我的片段中需要多次上下文:
...
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());
...
或者我应该初始化一次然后再使用它。
最好的方法是什么?
答案 0 :(得分:2)
这主要是一个偏好问题。您可以在任何需要的地方拨打getContext()
- 无需担心性能开销。或者,您可以在private Context context
方法中指定onCreate
字段。或者,如果特定方法有多种用途,请创建一个局部变量。
如果getContext
可能很慢,那么你肯定会把它藏起来,但它实际上只是一个简单的访问器(几乎 - 它在内部做了一点间接)。
选择您认为最具可读性的内容。
答案 1 :(得分:0)
在这种情况下,最好一次调用并使用它。这是由于这样的事实:没有多余的函数调用,执行会更快。
Context context = getContext();
我已经做了很多次,并将其存储到类中的变量中。在这种情况下,虽然看起来像这样:
class SomeClass {
Context context;
@Override
void onCreate(){
context = getContext();
}
}