Android - 为什么人们反复引用内联静态上下文,而不是在Method()中传递一次?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android - 为什么人们反复引用内联静态上下文,而不是在Method()中传递一次?相关的知识,希望对你有一定的参考价值。
我即将完成我的第一个真正的应用程序..
沿着我的道路(在过去的几年里),我看到了许多代码示例。
有一点是一致的:我总是看到使用静态context
引用,例如:
getApplicationContext()
,this.getActivity()
和许多其他此类参考..
但是今天早些时候,在询问如何从接收器中的方法中检索上下文之后,
我被告知简单地“传递它的上下文”,例如:public void receiverMethodCall(Context context)
。
我的问题是:如果这很简单,为什么人们经常在代码中反复内联重复静态上下文引用,而不是简单地将包含的方法传递给Context
开始,并在使用“context”时引用它需要?
我希望我的问题有意义 - 你得到了你的答案并被告知将上下文作为上下文类型变量传递 - 但是不要忘记当你想调用你的方法并传递一个上下文时,你将不得不知道这个上下文是并初始化它。
例如,如果你想制作Toast方法参数之一就是上下文,如果你使用了很多Toasts,最好有上下文引用并在每次要显示Toast时使用它(或使用任何需要上下文的其他方法。)而不是使用this.getActivity()
orgetApplicationContext()
。
通过这样做,您可以防止重复的代码,并且您不需要多次引用代码中的上下文,现在关于“为什么人们经常在其代码中内联重复静态上下文引用”的问题。
我可以想到一个案例,当做出2个上下文引用并不是坏事时:假设你在同一个活动中有2个方法正在使用上下文 - 如果这些方法被使用一次那么你可以在里面创建上下文引用该方法让垃圾收集器处理该引用。
我不得不说我同意你的观点,我认为如果它的可选方法只是将上下文传递给你的方法并让它使用它,它就是非常简单的解决方案。
以上是关于Android - 为什么人们反复引用内联静态上下文,而不是在Method()中传递一次?的主要内容,如果未能解决你的问题,请参考以下文章
Android - 无法从静态上下文中引用 executePendingTransactions