【发布时间】:2017-09-14 18:35:57
【问题描述】:
我已经看到了这种用于启动活动的特殊技术,在我看来,由于静态上下文,这不是一个好主意,但我希望有人可能有这种方法背后的正当理由。
您要启动的活动实现了一个静态启动(上下文上下文)方法,该方法设置了意图、标志等,并最终启动了活动。
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 不被垃圾收集,因为现在该静态方法具有对它的引用?这对我来说似乎是一个内存泄漏,并且仅仅为了能够保留正在创建的活动中包含的标志可能不是一个好主意。
这里有什么我遗漏的东西使这是一个很好的做法吗?
【问题讨论】:
-
没有。
staticfields 是个问题。static方法不是。
标签: android android-activity memory-leaks android-context