Sempre crie Thread & Handler como um membro estático de sua classe para evitar vazamento de memória.
static final class MyThread extends Thread {
@Override
public void run() {
// do long operations here
}
}
Se você precisar de referência à classe externa, use WeakReference .
static final class MyThread2 extends Thread {
public WeakReference<Activity> reference;
public MyThread2(Activity reference) {
this.reference = new WeakReference<Activity>(reference);
}
@Override
public void run() {
// do long operations here
Activity activity = reference.get();
if (activity == null) {
return;
}
// activity.someMethod();
}
}
Mais detalhes aqui .