Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

optimize when msg.getCallback() not null #11

Open
wangyong0716 opened this issue Jan 10, 2019 · 0 comments
Open

optimize when msg.getCallback() not null #11

wangyong0716 opened this issue Jan 10, 2019 · 0 comments

Comments

@wangyong0716
Copy link

leak could still occur when used like bellow:
WeakHandler handler = new WeakHandler();
Message m = Message.obtain(handler.getExecHandler(), new Runnable() {
@OverRide
public void run() {
//do something
}
});
handler.sendMessageDelayed(m, delaytimes);

although postDelay() should be used here, but what if when we get message like this:
Message message = Message.obtain(m);
and m has a callback?

so maybe sendMessageXX() methods should be optimized:

public final boolean sendMessage(Message msg) {
    if (msg.getCallback() != null) {
        return mExec.post(msg.getCallback());
    }
    return mExec.sendMessage(msg);
}

public final boolean sendMessageAtFrontOfQueue(Message msg) {
    if (msg.getCallback() != null) {
        return postAtFrontOfQueue(msg.getCallback());
    }
    return mExec.sendMessageAtFrontOfQueue(msg);
}

public boolean sendMessageAtTime(Message msg, long uptimeMillis) {
    if (msg.getCallback() != null) {
        return postDelayed(msg.getCallback(), uptimeMillis);
    }
    return mExec.sendMessageAtTime(msg, uptimeMillis);
}

public final boolean sendMessageDelayed(Message msg, long delayMillis) {
    if (msg.getCallback() != null) {
        return postDelayed(msg.getCallback(), delayMillis);
    }
    return mExec.sendMessageDelayed(msg, delayMillis);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant