将 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,减少需要知道它们存在的地方的数量和它们的布局方式
我已经看到了这种用于启动活动的特殊技术,由于静态上下文,在我看来这不是一个好主意,但我希望有人可能有这种方法背后的正当理由。
您要启动的 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,减少需要知道它们存在的地方的数量和它们的布局方式