设置为null为什么可以保证MotionEvent 对象不被持有
时间: 2024-04-23 20:21:52 浏览: 120
在 Android 中,MotionEvent 对象是用来描述用户触摸屏幕的事件的。当事件发生时,系统会创建一个 MotionEvent 对象,并将其传递给应用程序的事件处理方法中进行处理。在处理完事件后,应用程序通常会将 MotionEvent 对象设置为 null,以便系统可以回收它。
设置为 null 的原因是为了避免 MotionEvent 对象被持有,从而占用过多的内存。如果应用程序不将 MotionEvent 对象设置为 null,那么这些对象将会一直存在于内存中,从而导致内存的占用量不断增加。
因此,将 MotionEvent 对象设置为 null 是一种比较好的做法,可以有效地避免内存泄漏的问题。
相关问题
尽管设为null还是会执行
如果你在移除子 View 时将其 onTouchListener 设置为 null,但仍然发现该 onTouchListener 对象仍在执行,那么可能是因为该对象被其他线程持有或者该对象仍然被其他 View 引用。
可以尝试将该 onTouchListener 对象设置为一个空的 onTouchListener,例如:
```
// 将子 View 的 onTouchListener 设置为空的 onTouchListener
childView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
// 移除子 View
parentView.removeView(childView);
```
这样可以确保该 onTouchListener 不会再响应任何触摸事件。如果问题仍然存在,可能需要检查代码中是否有其他地方在使用该 onTouchListener 对象,或者该对象是否被其他 View 引用。
阅读全文