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

Passing a activity context into a static method, memory leak potential?

我已经看到了这种用于启动活动的特殊技术,由于静态上下文,在我看来这不是一个好主意,但我希望有人可能有这种方法背后的正当理由。

您要启动的 activity 实现静态启动(上下文上下文)方法,该方法设置意图、标志等并最终启动 activity。

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

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

SomeOtherActivity.launch(DifferentActivity.this);

我喜欢它允许您在 activity 中设置标志远离启动它的 DifferentActivity 但这似乎不是合理化传递 activity 的充分理由将上下文转换为静态方法。

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

我是否遗漏了什么让这是一个很好的做法?

将某些内容传递给静态函数不是潜在的内存泄漏。将变量存储在静态变量中是。这种技术是绝对安全的。我什至推荐它,因为您可以将变量传递给函数并将它们存储在 class 中的 extras 中,这将使用这些 extras,减少需要知道它们存在的地方的数量和它们的布局方式