How to resolve this error in android - java.lang.RuntimeException: Only one Looper may be created per thread -
here code in background service
public class backgroundservice extends service { private int interval1 = 60; // 60 seconds private int interval2 = 60; // 60 seconds //============================================================================================================================= private handler mtimer1 = new handler(); private runnable mtask1 = new runnable() { public void run() { looper.prepare(); log.w("gps tracker", "tracker going run "+new date()); locationmanager mlocmanager =(locationmanager)getsystemservice(context.location_service); locationlistener mloclistener = new mylocationlistener(); mlocmanager.requestlocationupdates( locationmanager.gps_provider, 0, 0, mloclistener);//, looper.getmainlooper()); mtimer1.postdelayed(this, interval1 * 1000l); looper.loop(); } }; //============================================================================================================================= private handler mtimer2 = new handler(); private runnable mtask2 = new runnable() { public void run() { if (isonline() == true) { log.w("method 2", "setupdatecardaccepttag"); setupdatecardaccepttag(); log.w("method 3", "getcardbulkserialdata"); getcardbulkserialdata(); log.w("method 12", "updatestockdatafromremote"); updatestockdatafromremote(); log.w("method 5", "setremarksdata"); setremarksdata(); log.w("method 6", "setcardsaledata"); setcardsaledata(); log.w("method 7", "synchmerchants"); synchmerchants(); log.w("method 9", "getupdatedcities"); getupdatedcities(); log.w("method 10", "getnotifications"); getnotifications(); log.w("method 11", "getnextserialdetails"); getnextserialdetails(); log.w("method 12", "getnextserialdetails"); //synchlocations(); log.w("method 13", "synchlocations"); } mtimer2.postdelayed(this, interval2 * 1000l); } }; when run application stopped after few seconds.its says below error message in log console please me sort out issue
thanks
you can not prepare looper multiple times thread. before preparing, chcek whether looper associated thread or not.
private runnable mtask1 = new runnable() { public void run() { if(looper.mylooper() == null) { // check looper associated or not. looper.prepare(); // no looper defined define new 1 } log.w("gps tracker", "tracker going run "+new date()); locationmanager mlocmanager =(locationmanager)getsystemservice(context.location_service); locationlistener mloclistener = new mylocationlistener(); mlocmanager.requestlocationupdates( locationmanager.gps_provider, 0, 0, mloclistener);//, looper.getmainlooper()); mtimer1.postdelayed(this, interval1 * 1000l); looper.loop(); } };
Comments
Post a Comment