Android “许多”;getContext();或者一个私有上下文=getContext()并使用它?

Android “许多”;getContext();或者一个私有上下文=getContext()并使用它?,android,Android,我在片段中多次需要上下文: ... account.restore(getContext()); ... dbHelper = new DBHelper(getContext()); ... DiskLruBasedCache.ImageCacheParams cacheParams = new DiskLruBasedCache.ImageCacheParams(getContext(), "CacheDirectory"); ...

我在片段中多次需要上下文:

    ...
    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());
    ...
或者我应该初始化它一次,然后使用它


什么是最好的方法?

这主要是偏好的问题。你可以在任何需要的地方打电话——没有理由担心性能开销。或者,您可以在
onCreate
方法中指定一个
私有上下文
字段。或者,如果某个特定方法有多种用途,则创建一个局部变量

如果
getContext
可能很慢,那么您肯定应该将其隐藏起来,但它实际上只是一个简单的访问器(几乎——它在内部执行了一点间接操作)


选择你认为最容易阅读的内容。

在这种情况下,最好调用它一次并使用它。这是因为,如果没有额外的函数调用,执行速度会更快。 这将是常见的

Context context = getContext();
我已经这样做过很多次,并将其存储到类中的一个变量中。在这种情况下,虽然看起来是这样的:

class SomeClass {
   Context context;
   @Override
   void onCreate(){
      context = getContext();
   }
}

private Context=getContext()
不起作用
private Context=getContext()
不会编译。OP已经在使用
getContext()
,只是询问是否有必要隐藏它。这就是为什么Cricket\u 007提到简单的getContext()不起作用。你也可以在这里查一查你在说什么
getContext()
片段中运行良好。它返回对所有者活动的引用(通过
FragmentHostCallback
),因此这与调用
getActivity()
.Fragment.getContext是一样的: