java - Sending a simple message from Service to Activity -
i trying find way send integer value service mainactivity, yet can't figure out tutorials on internet. using handler receive messages i'm sending thread in service.
my code thread in service:
private class servicethread extends thread { @override public void run() { super.run(); try{ log.i("service", "task performed"); int x = 0; (int = 0; < 20; i++){ x += (random.nextint(20) + 20); } theinteger = x/20; message msg = message.obtain(); msg.what = my_rnd_int; msg.arg1 = theinteger; handler.sendmessage(msg); }catch(exception e){ e.getmessage(); } } } my code attempting receive message:
public messenger mmessenger = new messenger(new incominghandler()); class incominghandler extends handler { @override public void handlemessage(message msg) { switch (msg.what) { case simpleservice.my_rnd_int: rndint.settext(msg.arg1); break; default: super.handlemessage(msg); } } }
assuming activity , service in same package.
service side
// supposing value integer declared somewhere as: int myinteger; private void sendmessage() { // string "my-integer" used filer intent intent intent = new intent("my-integer"); // adding data intent.putextra("message", myinteger); localbroadcastmanager.getinstance(this).sendbroadcast(intent); } activity side
@override public void onresume() { super.onresume(); // registers mmessagereceiver receive messages. localbroadcastmanager.getinstance(this) .registerreceiver(mmessagereceiver, new intentfilter("my-integer")); } // handling received intents "my-integer" event private broadcastreceiver mmessagereceiver = new broadcastreceiver() { @override public void onreceive(context context, intent intent) { // extract data included in intent int yourinteger = intent.getintextra("message",-1/*default value*/); } }; @override protected void onpause() { // unregister since activity not visible localbroadcastmanager.getinstance(this) .unregisterreceiver(mmessagereceiver); super.onpause(); }
Comments
Post a Comment