Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Making changes to Main Activity UI from thread in Service

I've been looking for quite some time for some good documentation or a good example of this. I need to make changes to my main activity UI from the worker thread in my service which is running in the background. As far as I understand I know that I am suppose to work with some sort of Handler but I am not sure exactly how to approach this.

Does anyone have any ideas or good examples that they could direct me to? The UI element I am changing is a TextView that is simply informing the user of the status of the thread.

Thanks for your help.

like image 285
gtdevel Avatar asked Dec 22 '22 09:12

gtdevel


1 Answers

All you have to do is to create a Handler on the UI thread:

private Handler serviceHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        someFunctionInTheUIThread();
    }
};

And then pass this through to your service. You could have a function in the Service like this:

public void registerHandler(Handler serviceHandler) {
    handler = serviceHandler;
}

and then pass the handler through like this:

theService = ((LocalBinder) service).getService();
theService.registerHandler(serviceHandler);

then to send a message back:

Message msg = handler.obtainMessage(IDENTIFIER, "Message or data");
handler.sendMessage(msg);
like image 120
Martyn Avatar answered Dec 27 '22 19:12

Martyn