在这种情况下,Activity中定义的Handler是否会泄漏

时间:2011-07-02 13:49:08

标签: android

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

final Handler updateHandler = new Handler() {
    public void handleMessage(Message msg) {
       // Do stuff.
    }
};

在我的onCreate方法中,如果我将此处理程序分配给我的Activity之外的静态列表,它是否会泄漏(或者更确切地说,外部列表是否会永远引用我的活动)?即,:

@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);
    }
}

1 个答案:

答案 0 :(得分:2)

  

在我的onCreate方法中,如果我将此处理程序分配给我的Activity之外的静态列表,它是否会泄漏(或者更确切地说,外部列表是否会永远引用我的活动)?

是。不要将Handlers放在静态数据成员中。