作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读了文章How to Leak a Context: Handlers & Inner Classes ,现在我有一个问题。如果我将mHandler
作为参数传递给另一个线程,从该线程向主线程发送消息,是否会导致内存泄漏?
示例 Activity
public class SampleActivity extends Activity {
/**
* Instances of static inner classes do not hold an implicit reference to
* their outer class.
*/
private static class MyHandler extends Handler {
private final WeakReference<SampleActivity> mActivity;
public MyHandler(SampleActivity activity) {
mActivity = new WeakReference<SampleActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
SampleActivity activity = mActivity.get();
if (activity != null) {
// ...
}
}
}
private final MyHandler mHandler = new MyHandler(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Run a thread (authentication, synchronization, etc.)
// Later the user might press the Home button, the Back button, or make a call
new MyThread(mHandler).start();
}
}
我的线程
public class MyThread extends Thread {
private final Handler handler;
public MyThread(Handler handler) {
this.handler = handler;
}
@Override
public void run() {
// A long operation
// I'm done
handler.sendEmptyMessage(1);
}
}
最佳答案
如果 MyThread 是静态类或外部类,则不会造成泄漏。没有对 Activity 的任何非弱引用。
关于android - 如何泄漏上下文。 MyHandler 的实例会导致泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25784974/
你最喜欢的法语回来了^^我只是有一个小问题。 在YUI示例中,这个函数允许获取信息,我不确定是否理解myHandler做了什么引用: var myHandler = function(sType, a
我读了文章How to Leak a Context: Handlers & Inner Classes ,现在我有一个问题。如果我将mHandler作为参数传递给另一个线程,从该线程向主线程发送消息
我是一名优秀的程序员,十分优秀!