Observable pattern not notify in android -
i have implement observer/observable pattern in android application, when notify, receivers dont call.
this code:
the observer, class call rest service, if call fails because server off, or other problem, change rest server ip, increase int value observable , observable must call update override method, dont it:
public class loginapicall extends apicallbase<object> implements observer { private string team; private string password; private string deviceid; private loginintents loginintents; public loginapicall(context context, string team, string password, string deviceid, apiresponselistener listener) { super(context, listener); this.team = team; this.password = password; this.deviceid = deviceid; loginintents = loginintents.getinstance(); loginintents.addobserver(this); } @override protected void dowork() { logindata login = new logindata(team, password, deviceid); gson gson = new gson(); string value = gson.tojson(login); try { bytearrayentity entity = new bytearrayentity(value.getbytes("utf-8")); api.post(context, "teamlogin", entity, new jsonhttpresponsehandler() { @override public void onsuccess(jsonobject jsonobject) { apisuccess(jsonobject); } @override public void onfailure(throwable throwable, jsonobject jsonobject) { throwable.printstacktrace(); apierror(new apiexception()); } @override public void onfailure(throwable throwable, string content) { if (throwable.getcause() instanceof connecttimeoutexception) { system.out.println("connection timeout !"); } loginintents.increaseintents(); throwable.printstacktrace(); apierror(new serverexception()); } }); } catch (unsupportedencodingexception e) { e.printstacktrace(); } } @override public void update(observable observable, object data) { execute(); } }
and observable, when increase intents attribute 0 1, notify observers , should something:
public class loginintents extends observable { private static volatile loginintents instance = null; private int intents = 0; private loginintents() { } public static loginintents getinstance() { if (instance == null) { instance = new loginintents(); } return instance; } public int getintents() { return instance.intents; } public void increaseintents() { instance.intents++; if (intents == 1) { notifyobservers(); setchanged(); } } }
whats wrong? notifyobservers method called when debug , setchanged too, dont enter in update method of observer..
shouldn't setchanged() called before notifyobservers()?
Comments
Post a Comment