android - why can't I call wakeLock.release(); from a handler? -


i trying give locationlistener time update, because doesn't have time update if call quit() method right away. combat thought put quit method in handler wait little bit. here quit() method:

private void quit(){     msensormanager.unregisterlistener(myservice.this);     wakelock.release();     this.stopself(); } 

this methods purpose unregister accelerometer, release wakelock, , stop service has been started.

this stack trace:

07-28 11:50:44.023 25510-25510/com.example.cnash.raf e/androidruntime: fatal exception: main                                                                    process: com.example.cnash.raf, pid: 25510                                                                    java.lang.runtimeexception: wakelock under-locked mywakelock                                                                        @ android.os.powermanager$wakelock.release(powermanager.java:2016)                                                                        @ android.os.powermanager$wakelock.release(powermanager.java:1986)                                                                        @ com.example.cnash.raf.myservice.quit(myservice.java:104)                                                                        @ com.example.cnash.raf.myservice.access$000(myservice.java:27)                                                                        @ com.example.cnash.raf.myservice$1.run(myservice.java:92)                                                                        @ android.os.handler.handlecallback(handler.java:751)                                                                        @ android.os.handler.dispatchmessage(handler.java:95)                                                                        @ android.os.looper.loop(looper.java:154)                                                                        @ android.app.activitythread.main(activitythread.java:6776)                                                                        @ java.lang.reflect.method.invoke(native method)                                                                        @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1520)                                                                        @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1410) 

i have seen many people same error have trouble because don't acquire wakelock, aquire during oncreate of service, so:

@override public void oncreate(){     msensormanager = (sensormanager)getsystemservice(sensor_service);     msensor = msensormanager.getdefaultsensor(sensor.type_accelerometer);     msensormanager.registerlistener(this, msensor, sensormanager.sensor_delay_normal);      powermanager mgr = (powermanager) getapplicationcontext().getsystemservice(context.power_service);     wakelock = mgr.newwakelock(powermanager.partial_wake_lock, "mywakelock");     wakelock.acquire();      locationmanager lm = (locationmanager) getsystemservice(context.location_service);      try {         lm.requestlocationupdates(locationmanager.gps_provider, 1000, .1f, locationlistener);     } catch(securityexception | illegalargumentexception e) {         e.printstacktrace();     }      toast.maketext(this, "oncreate successful", toast.length_short).show(); } 

below problem is. have onsensorchanged want record accelerometer @ instant, , position, , quit. location isn't getting updated fast enough. here onsensorchanged method:

@override public void onsensorchanged(sensorevent event) {     addingstring = serializedatain();     addingstring += '\n' + "x, y, z: " + event.values[0] + ", " +             event.values[1] + ", " + event.values[2];      addingstring += '\n' + "    " + "longitude, latitude: " + longitude + ", " + latitude;     serializedataout(addingstring);      mhandler.postdelayed(new runnable() {         public void run(){             quit();         }     }, 1000); } 

i want add data 1 second, , quit. if take out handler , call quit(); application runs smoothly. if put handler, crashes. why?


Comments

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -