首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >多个" getContext()“或一个私有上下文=getContext()并使用它?

多个" getContext()“或一个私有上下文=getContext()并使用它?
EN

Stack Overflow用户
提问于 2017-10-11 00:50:15
回答 2查看 194关注 0票数 1

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

代码语言:javascript
复制
    ...
    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());
    ...

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

最好的方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2017-10-11 01:23:26

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

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

使用你认为最具可读性的内容。

票数 2
EN

Stack Overflow用户

发布于 2018-06-20 03:42:35

在这种情况下,最好调用它一次并使用它。这是因为没有外部函数调用,执行速度会更快。我们通常会看到

代码语言:javascript
复制
Context context = getContext();

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

代码语言:javascript
复制
class SomeClass {
   Context context;
   @Override
   void onCreate(){
      context = getContext();
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46671950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档