我的用户点击了一个按钮。按下按钮500毫秒后,我想开始下一个动作。按下按钮后,我的应用程序通常会进行50-100毫秒的额外处理。
因此我在通过班级按下按钮后立即开始一个新主题:
private class WaitForUpdating extends Thread {
/** The app waits for duration of the passed time (in ms)
and afterwards loads the next card.
*/
public WaitForUpdating(int time) {
this.start();
}
public void run() {
try {
Thread.sleep(500);
Message msg = new Message();
Bundle b = new Bundle();
b.putInt("State", UPDATING);
msg.setData(b);
mHandler.sendMessage(msg);
} catch (InterruptedException e) {
}
}
}
然后我尝试通过以下方式处理结果:
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
Bundle b = msg.getData();
int state = b.getInt("State");
if (state == ScoreAndTimeFragment.UPDATING) {
try {
setCard();
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
Android linter告诉我这会产生Handler泄漏。在这种情况下,我该怎么办才能避免泄漏?