Android 在这种情况下,活动泄漏中定义的处理程序是否会泄漏

Android 在这种情况下,活动泄漏中定义的处理程序是否会泄漏,android,Android,我有一个定义了处理程序的活动: final Handler updateHandler = new Handler() { public void handleMessage(Message msg) { // Do stuff. } }; 在我的onCreate方法中,如果我将此处理程序分配给活动外部的静态列表,它是否会泄漏(或者,外部列表是否会永远保留对我的活动的引用)?即: @覆盖 创建时的公共void(Bundle savedInstanceState){

我有一个定义了处理程序的活动:

final Handler updateHandler = new Handler() {
    public void handleMessage(Message msg) {
       // Do stuff.
    }
};
在我的
onCreate
方法中,如果我将此处理程序分配给活动外部的静态列表,它是否会泄漏(或者,外部列表是否会永远保留对我的活动的引用)?即:

@覆盖
创建时的公共void(Bundle savedInstanceState){
addHandler(updateHandler);
}
...
公共类{
静态列表处理程序=新的ArrayList();
公共静态void addHandler(处理程序处理程序){
添加(handler);
}
}
在我的onCreate方法中,如果我将这个处理程序分配给我的活动之外的一个静态列表,它是否会泄漏(或者说,这个外部列表是否会永远保留对我的活动的引用)


对。不要将
处理程序
放在静态数据成员中。

是否有替代方法,例如当视图被“释放”或操作系统不再使用时调用的事件?如果是这样的话,我可以注销处理程序,是吗?@Chu:“有没有其他方法,比如当视图被“释放”或不再被操作系统使用时调用的事件?”——IMHO,无论您认为要解决的问题是什么,都应该以其他方式解决,而不是将
处理程序
放在静态数据成员中。由于您没有费心解释通过这个静态的
处理程序列表
您试图实现的目标,因此我或其他任何人都不可能给您建议您真正应该在这里做什么。好的,我开始了一个新问题,以解决完全相同的问题:
@Override
public void onCreate(Bundle savedInstanceState) {          
      SomeStaticClass.addHandler(updateHandler);
}

...

public class SomeStaticClass {
    static List<Handler> handlers = new ArrayList<Handler>();

    public static void addHandler(Handler handler) {
         handlers.add(handler);
    }
}