multithreading - Android device behaves differently when plugged in USB vs not plugged in -


i running tests on htc magic (dev phone 2). have 3 background asynctasks. 1 downloads data server, 1 wakes screen once minute , last keeps application alive given duration. download thread asynctask seems work correctly, , while downloading(~1hr) other 2 seem work well. once downloads done if phone unplugged other 2 threads don't work properly(screen doesn't wake , keepalive never ends). seems stop altogether, if plug phone computer start again... not sure causing this, screen wakeup should preventing device going sleep.

all code can found here: https://homepage.usask.ca/~mcb394/receive.java or 2 classes seem stop working after download completes , when unplugged below. thoughts awesome.

    /**  * class keeps phone alive entire duration necessary use data (think of media player buffer)  * @author michael bullock  */ private class keeprunning extends asynctask<void, void, void> {      @override     protected void doinbackground(void... arg0) {           try {             thread.sleep(alive_time_ms);         } catch (interruptedexception e) {             out.print(" keeprunning crashed!!!!!\n");             out.flush();             e.printstacktrace();         }          out.print(" keeprunning completed\n");         out.flush();         timecompleted = true;         return null;     } }   /**  * class powers phone's screen every wakeup_every ms, stays awake 1s  * phone avoids going sleep  * @author michael bullock  */ private class wakeup extends asynctask<void, void, void> {      @override     protected void doinbackground(void... arg0) {          powermanager pm = (powermanager) getsystemservice(context.power_service);         powermanager.wakelock wl = pm.newwakelock(powermanager.screen_bright_wake_lock | powermanager.acquire_causes_wakeup, getclass().getname());          do{              try {                 thread.sleep(wakeup_every);              } catch (interruptedexception e) {                 e.printstacktrace();             }                         wl.acquire();             log.i("", "********** acquired wakelock **********");              try {                 thread.sleep(1000);             } catch (interruptedexception e) {                 e.printstacktrace();             }              log.i("", "********** releasing wakelock **********");             wl.release();          }while(!timecompleted || !transfercompleted);          out.print(" wakeup completed\n");         out.flush();         return null;     } } 

the service or activity running asynctask may getting killed, might affected being on battery power. try using service , using service.startforeground.


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -