在每个片段上设置一个Context字段变量(getActivity()。getApplicationContext())是一个坏主意吗?

时间:2014-08-21 15:16:51

标签: android android-context

我倾向于在我的片段中调用getActivity().getApplicationContext(),在我的片段上默认设置一个Context字段变量是不是一个坏主意?我们正在开始工作中的Android开发,我不想为小组创造任何坏习惯。

3 个答案:

答案 0 :(得分:1)

不建议使用getApplicationContext(),只使用Activity上下文,在某些情况下getActivity()可能会在Fragments中返回null,所以我认为在onAttach(Activity activity)上获取Activity Context是一种更好的方法。片段。

答案 1 :(得分:0)

在您可以直接使用Activity实例时,我没有看到使用应用程序上下文的原因。

请注意,如果片段与活动分离,则getActivity()将返回Null作为结果。所以你必须看到应用程序逻辑。

如果片段在从活动中分离后需要做某事,那么将活动保持为字段,否则只需检查是否(getActivity()!= null)

答案 2 :(得分:0)

我看到将应用程序上下文存储为片段中的字段有用的一个原因是当片段属于没有任何UI的类型时,其目的是启动一个在背景,片段也有setRetainInstance(true);保持旋转。

在这种情况下,活动可以在轮换时重新创建,但在后台执行后台操作的任务可以继续并由片段保存。假设该任务的结果从Internet获取了某些东西,然后想要将其存储在数据库中,然后该任务的回调返回到该片段。由于潜在的轮换,对getActivity()的调用可能导致null,但是应用程序上下文仍然保留,因此具有应用程序上下文的字段很方便,因为它在活动时不会被销毁。需要在onAttach()方法中调用getActivity().getApplicationContext()并将其存储到字段中。