补充一下楼上的回答,如果 class B 是一个静态内部类,非要持有 activity 的引用的话,可以考虑弱引用。
static class B {
private WeakReference<Activirty> ref;
public void setRef(Activity activity) {
this.ref = new WeakReference<>(activity);
}
public void doSomething(){
if (ref.get() != null){
ref.get().doSomething();
}
}
}
关于内存泄漏问题建议阅读文章
Android内存泄露——全解析和处理办法
题主你看一下下面这两种情况就明白了。
A中的静态方法a,传入了一个Activity对象,然后方法结束,Activity的引用activity生命周期结束,这样不会造成泄露,没问题。
B中的静态方法b,传入一个Activity对象,然后B的成员变量mActivity接收了这个引用。这个静态成员变量会一直存在在进程中,这样就会造成内存泄露。
方法内的变量都是局部变量, 方法完了就不持有的。
当然可以啊,没感觉有什么不好的
补充一下楼上的回答,如果 class B 是一个静态内部类,非要持有 activity 的引用的话,可以考虑弱引用。
建议楼上的弱引用方式,官方对于Handler的使用,也是这样的方式
讲道理的话,显然可以这样用
但是!!! 请不要这样,楼上都说了,内存泄漏