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

Le2*_*410 10 android memory-leaks android-context android-activity

我已经看到这种特殊的技术用于启动活动,在我看来,由于静态上下文,我觉得这是一个坏主意,但我希望有人可能有这种方法背后的合理理由.

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

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

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

SomeOtherActivity.launch(DifferentActivity.this);
Run Code Online (Sandbox Code Playgroud)

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

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

我在这里缺少哪些东西使这成为一个好习惯吗?

Gab*_*han 20

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