Service restarting for no reason?

by DCheeseman » Thu, 11 Mar 2010 22:56:47 GMT

Sponsored Links
 hile debugging one of my apps (one that sits in the background and
logs accelerometer data), I noticed that it would randomly and without
any prompt reset itself. It would be running it's normal timer task
and suddenly it would stop, the create function would be called and
any running task would halt. Here's the trace:

03-11 07:50:34.574: VERBOSE/AccelerLogService(29277):
03-11 07:50:34.584: VERBOSE/AccelerLogService(29277): History Size:
03-11 07:50:35.064: VERBOSE/AccelerLogService(29277):
03-11 07:50:35.084: VERBOSE/AccelerLogService(29277): History Size:
03-11 07:50:35.544: VERBOSE/AccelerLogService(29277):
03-11 07:50:36.044: VERBOSE/AccelerLogService(29277): History Size:
03-11 07:50:36.484: VERBOSE/AccelerLogService(29277):
03-11 07:50:37.024: VERBOSE/AccelerLogService(29277): History Size:
03-11 07:50:38.994: VERBOSE/AccelerLogService(29277):
03-11 07:50:39.014: VERBOSE/AccelerLogService(29277): History Size:
03-11 07:51:03.984: VERBOSE/AccelerLogService(29395): CREATED
03-11 07:52:41.624: VERBOSE/AccelerLogService(29502): CREATED

And here's the service code:

public class AccelerLogService extends Service implements
SensorEventListener {
private static final String LOG_TAG = AccelerLogService.class
private static final String base_dir = "/sdcard/";
private static WakeLock wl;

private long startTime;
private volatile float[] lastData;
private static Queue<float[]> lastFiveMinutes;

private static BufferedWriter br;
private static Timer timer;
private static TimerTask tt;
float threshold = 0.0f;
int interval;

private boolean getAccelerometer() {
SensorManager sensorMgr = (SensorManager)
List<Sensor> sensorList = sensorMgr
boolean addedListener = sensorMgr.registerListener(
(SensorEventListener) this, sensorList.get(0),
if (addedListener)
Log.v(LOG_TAG, "Listener Added");
Log.v(LOG_TAG, "Listener Not Added");
return addedListener;

public void onCreate() {
if (timer == null)
timer = new Timer();
if (lastFiveMinutes == null)
lastFiveMinutes = new LinkedList<float[]>();

public void onStart(Intent intent, int startid) {
super.onStart(intent, startid);
if (intent.getExtras().containsKey("ms")) {
interval = intent.getExtras().getInt("ms");
} else {
interval = 5000;

Service restarting for no reason?

by Mark Murphy » Thu, 11 Mar 2010 23:53:34 GMT


Do not use TimerTask with an unbound Service. Use AlarmManager, so the
Service does not have to remain in memory all the time. 

WakeLocks have nothing to do with keeping services in memory. In
general, you don't *want* to keep services in memory any more than is

Mark Murphy (a Commons Guy)  | 

_Android Programming Tutorials_ Version 2.0 Available!


Sponsored Links

Other Threads

1. HTC phone for testng?

I am almost ready to begin testing my apps on a real phone.

I don't want a G1.

If I got an unlocked HTC, can I use that for my testing, or do a need
a specialized developer phone from Google\?

2. Rating Bar Dialog API

I know Market application has Rating Bar Dialog. Is there any API to
create Rating Bar Dialog in Android SDK 1.5 or 1.6.?

3. yahoo web mail

4. Do MapView Overlays get painted at angle?

5. clear chat history native app

6. Android code for Knowing whether it is second call or first

7. RNDIS working in Android