使用计时器调用处理程序时,Android HandlerLeak

时间:2017-01-25 20:18:32

标签: android android-handler

我的用户点击了一个按钮。按下按钮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泄漏。在这种情况下,我该怎么办才能避免泄漏?

0 个答案:

没有答案