Get the lock in the oncreate of the service and release it at the end of the thread
On Sep 9, 4:41 am, Evelyon <evely...@gmail.com> wrote: > I have got a service which runs a thread. The thread save some data in > a file (in the sdcard). When Android goes to sleep, I need that the > service and the thread continue running. I tried it with a > PARTIAL_WAKE_LOCK, but it doesn't work; the thread stops while Android > is sleeping. Other locks like FULL_WAKE_LOCK works, but I need to use > PARTIAL_WAKE_LOCK because, in the future, in that thread I will read > from a serial port and I don't care the screen turn off. > > I don't know if I have some mistake in the code, or if I don't > understand the PARTIAL_WAKE_LOCK. Somebody can tell me why my solution > doesn't wrok? > > This is part of the code of the main activity, where the service is > stareted: > > public void onClick(View v) { > if (SerialPortService.WAKELOCK == null) { > PowerManager pm = (PowerManager) > getSystemService(Context.POWER_SERVICE); > SerialPortService.WAKELOCK = > pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, > SerialPortService.WL_TAG); > SerialPortService.WAKELOCK.acquire(); > startService(new Intent(getApplicationContext(), > SerialPortService.class)); > } > } > > This is the code of the service: > > public class SerialPortService extends Service { > > public static String WL_TAG = "serial_port_wl_tag"; > public static PowerManager.WakeLock WAKELOCK = null; > private BufferedWriter out = null; > > public IBinder onBind(Intent intent) { > return null; > } > > public void onCreate() { > super.onCreate(); > try { > File root = Environment.getExternalStorageDirectory(); > if (root.canWrite()){ > File dataFile = new File(root, "batterytest.txt"); > FileWriter dataFileWritter = new > FileWriter(dataFile); > out = new BufferedWriter(dataFileWritter); > } > } catch (IOException ioe) { > Log.d("TEST", "Could not open file " + > ioe.getMessage()); > } > readThread = new ReadThread(); > readThread.start(); > } > > public void onDestroy() { > if (readThread != null) readThread.interrupt(); > WAKELOCK.release(); > WAKELOCK = null; > try { > out.close(); > } catch (IOException ioe) { > Log.d("TEST", "Could not close file " + > ioe.getMessage()); > } > super.onDestroy(); > } > > private class ReadThread extends Thread { > public void run() { > super.run(); > while (!isInterrupted()) { > try { > Thread.sleep(5000); > if (out != null) { > Calendar now = Calendar.getInstance(); > out.write(now.getTime().toString()); > out.newLine(); > } catch (IOException ioe) { > Log.d("TEST", "Could not read file " + > ioe.getMessage());} > return; > } catch (InterruptedException e) { > return; > } > } > } > > } > > } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en