许多“getContext()”或一个私有上下文 = getContext() 并使用它?
Posted
技术标签:
【中文标题】许多“getContext()”或一个私有上下文 = getContext() 并使用它?【英文标题】:Many "getContext()" or one private context = getContext() and use it? 【发布时间】:2018-03-22 04:02:33 【问题描述】:我的片段中多次需要上下文:
...
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());
...
或者我应该初始化一次然后使用它。
什么是最好的方法?
【问题讨论】:
private Context = getContext()
不起作用
private Context = getContext()
不会编译。
【参考方案1】:
这主要是一个偏好问题。您可以在任何需要的地方致电getContext()
——无需担心性能开销。或者,您可以在 onCreate
方法中分配一个 private Context context
字段。或者,如果特定方法有多种用途,请创建一个局部变量。
如果getContext
可能很慢,那么您肯定应该隐藏它,但它实际上只是一个简单的访问器(几乎——它在内部做了一点间接)。
选择你认为最易读的东西。
【讨论】:
OP 已经在使用getContext()
,只是询问将其隐藏是否有意义。
这就是 Cricket_007 提到 getContext() 不起作用的原因。你也可以在这里查看***.com/a/20464697/7337723
你在说什么? getContext()
在 Fragment
中运行良好。它返回对所有者活动的引用(通过FragmentHostCallback
),因此它与调用getActivity()
相同。
Fragment.getContext: developer.android.com/reference/android/app/…【参考方案2】:
在这种情况下,最好调用一次并使用它。这是因为没有多余的函数调用,执行速度会更快。 很常见
Context context = getContext();
我已经这样做了很多次并将其存储到一个类中的一个变量中。在这种情况下,虽然它看起来像这样:
class SomeClass
Context context;
@Override
void onCreate()
context = getContext();
【讨论】:
以上是关于许多“getContext()”或一个私有上下文 = getContext() 并使用它?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Application.getContext() 返回 null? [复制]
无法解析“myAdapter”中的方法“getContext”[重复]
getContext() , getApplicationContext() , getBaseContext()的区别