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

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -