将活动上下文传递给静态方法,内存泄漏可能性?

时间:2017-04-18 19:08:03

标签: android android-activity memory-leaks android-context

我已经看到了这种启动活动的特殊技术,但由于静态环境,我认为这似乎是一个坏主意,但我希望有人可能有这种方法背后的合理理由。

您要启动的活动实现静态启动(Context context)方法,该方法设置intent,flags等,最后启动活动。

public static void launch(Context context){
   Intent i = new Intent(context, SomeOtherActivity.class);
   // flag stuff
   context.startActivity(i);
}

然后,一个DifferentActivity可以用一行启动SomeOtherActivity。

SomeOtherActivity.launch(DifferentActivity.this);

我喜欢它如何允许你在活动中设置标志,而不是启动它的DifferentActivity,但它似乎不足以合理地将该活动的上下文传递给静态方法。

这不会导致DifferentActivity不被垃圾收集,因为现在静态方法有引用吗?这似乎是一个内存泄漏给我,可能不是一个好主意,只是为了能够保持正在创建的活动中包含的标志。

这里有什么东西让我觉得这是一个很好的做法吗?

1 个答案:

答案 0 :(得分:15)

将某些内容传递给静态函数并不是潜在的内存泄漏。将变量存储在静态变量中是。这种技术非常安全。我甚至推荐它,因为你可以将变量传递给函数并将它们存储在将要使用这些额外内容的类中的额外内容中,减少需要知道它们存在的位置的数量以及它们的存在方式#39;重新布局

相关问题