android - Sending data from bound Service's another thread to Activity -
i have activity , service, called bindservice activity. in service perform operations in thread using vk sdk. here parse json models , add them list. question how can send list thread after parsing activity? here code of service
public class requestservice extends service { private final ibinder mbinder = new requestbinder(); private list<item> mitems; private string mstartfrom; private vkrequest mvkrequest; public class requestbinder extends binder { public requestservice getservice() { return requestservice.this; } } @override public void oncreate() { super.oncreate(); mitems = new arraylist<>(); loadnews(""); } @override public ibinder onbind(intent intent) { return mbinder; } public void loadnews(string startfrom) { if (startfrom.equals("")) { mitems.clear(); } mvkrequest = new vkrequest(constants.method_name, vkparameters.from(constants.filters, constants.filter_names, vkapiconst.count, constants.news_count, constants.start_from, startfrom)); // performs in thread mvkrequest.executewithlistener(new vkrequest.vkrequestlistener() { @override public void oncomplete(vkresponse response) { super.oncomplete(response); jsonobject result = response.json; try { mitems = parseutils.parse(result); mstartfrom = parseutils.getnextfrom(); } catch (jsonexception e) { e.printstacktrace(); } } }); } public list<item> getitems() { return mitems; } public string getstartfrom() { return mstartfrom; }
}
you can use context.sendbroadcast(intent)
. class in project can create intent , send intent through broadcast.
for example:
// somewhere in code (your service class, example) private void sendmessage(context context) { intent intent = new intent("com.example.keys.message"); intent.putextra("message", "hello world!"); // send broadcast broadcast receiver message context.sendbroadcast(intent); }
in activity, need declare broadcast receiver:
private final broadcastreceiver mhandlemessagereceiver = new broadcastreceiver() { @override public void onreceive(context context, intent intent) { string message = intent.getextras().getstring("message"); // contains "hello world!" // !!! message !!! } } @override protected void oncreate(bundle savedinstancestate) { registerreceiver(mhandlemessagereceiver, new intentfilter("com.example.keys.message")); } @override protected void ondestroy() { unregisterreceiver(mhandlemessagereceiver); }
so, can send strings, numbers , objects anywhere in code. , can have more 1 broadcastreceiver.
Comments
Post a Comment