很多" getContext()"或者一个私有context = getContext()并使用它?

时间:2017-10-10 16:50:15

标签: android

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

    ...
    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());
    ...

或者我应该初始化一次然后再使用它。

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

这主要是一个偏好问题。您可以在任何需要的地方拨打getContext() - 无需担心性能开销。或者,您可以在private Context context方法中指定onCreate字段。或者,如果特定方法有多种用途,请创建一个局部变量。

如果getContext可能很慢,那么你肯定会把它藏起来,但它实际上只是一个简单的访问器(几乎 - 它在内部做了一点间接)。

选择您认为最具可读性的内容。

答案 1 :(得分:0)

在这种情况下,最好一次调用并使用它。这是由于这样的事实:没有多余的函数调用,执行会更快。

Context context = getContext();

我已经做了很多次,并将其存储到类中的变量中。在这种情况下,虽然看起来像这样:

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