Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-为什么人们反复内联引用静态上下文,而不是在方法()中传递一次?_Java_Android_Android Activity_Broadcastreceiver_Android Context - Fatal编程技术网

Java Android-为什么人们反复内联引用静态上下文,而不是在方法()中传递一次?

Java Android-为什么人们反复内联引用静态上下文,而不是在方法()中传递一次?,java,android,android-activity,broadcastreceiver,android-context,Java,Android,Android Activity,Broadcastreceiver,Android Context,我即将完成我的第一个真正的应用程序。 在过去的几年中,我看到了许多代码示例。 有一点是一致的:我总是看到使用静态上下文引用,例如: getApplicationContext(),this.getActivity(),以及许多其他类似的引用。 但今天早些时候,在询问如何从接收方中的方法检索上下文后,我被告知只需“传递上下文”,例如:public void receiverMethodCall(Context Context) 我的问题是:如果这么简单,为什么人们经常在代码中反复内联使用静态上

我即将完成我的第一个真正的应用程序。
在过去的几年中,我看到了许多代码示例。
有一点是一致的:我总是看到使用静态
上下文
引用,例如:
getApplicationContext()
this.getActivity()
,以及许多其他类似的引用。

但今天早些时候,在询问如何从接收方中的方法检索上下文后,
我被告知只需“传递上下文”,例如:
public void receiverMethodCall(Context Context)



我的问题是:如果这么简单,为什么人们经常在代码中反复内联使用静态上下文引用,而不是简单地传递包含方法a
context
,然后使用“context”引用它需要时?

我希望我理解了你的问题的意思-你得到了答案,并被告知将上下文作为上下文类型变量传递-但不要忘记,当你想调用方法并传递上下文时,你必须知道该上下文是什么并对其进行初始化。

例如,如果您想制作一个Toast,其中一个方法参数是context,如果您正在使用大量Toast,那么最好在每次显示Toast时使用context引用(或使用任何其他需要context的方法),而不是使用
this.getActivity()
getApplicationContext()

通过这样做,您可以防止重复的代码,并且您不需要在代码中多次引用上下文,现在来回答关于的问题“为什么人们经常在代码中内联重复静态上下文引用”


我可以想到一种情况,做2个上下文引用并不是一件坏事:假设在同一个活动中有2个方法在使用上下文-如果这些方法使用一次,那么您可以在方法内部创建上下文引用,并让垃圾收集器处理该引用。

我必须说我同意你,我认为如果它是可选的,只需将上下文传递给你的方法并让它使用,这真的是一个简单的解决方案。

谢谢你,塔米尔,看来你同意我的观点。。我只是不太明白为什么人们在可能的情况下不经常这样做,甚至总是这样。。相反,他们会反复(通常过于复杂)调用以获取上下文。其他人能否进一步解释为什么不定期执行此操作?PS.必须在原始(调用)方法变量中传递上下文才能执行此操作,例如在
onReceive
中,如果是,您是否可以简单地将
上下文
变量添加到活动中,以便可以同样轻松地将其传递到其方法中?是的,您可以保存上下文变量,并在每次需要带有上下文的方法时调用它——但如果您不经常使用上下文,最好不要使用全局变量,而将其用作局部变量。对于你的第一个问题——那里有很多不同的程序员,他们中的一些人似乎只是想以最快的方式解决这个问题,即使这意味着要反复调用以获取上下文引用。我投票赞成并接受了你的答案。。看起来很结实。再次感谢您花时间澄清并给出您的想法。