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):
0.088633,1.253072,1.103248,9.629586
03-11 07:50:34.584: VERBOSE/AccelerLogService(29277): History Size:
0.083333336
03-11 07:50:35.064: VERBOSE/AccelerLogService(29277):
0.096283,1.253072,1.035146,9.629586
03-11 07:50:35.084: VERBOSE/AccelerLogService(29277): History Size:
0.1
03-11 07:50:35.544: VERBOSE/AccelerLogService(29277):
0.104550,1.253072,1.007906,9.575105
03-11 07:50:36.044: VERBOSE/AccelerLogService(29277): History Size:
0.11666667
03-11 07:50:36.484: VERBOSE/AccelerLogService(29277):
0.120600,1.239452,1.035146,9.615966
03-11 07:50:37.024: VERBOSE/AccelerLogService(29277): History Size:
0.13333334
03-11 07:50:38.994: VERBOSE/AccelerLogService(29277):
0.136867,1.293933,1.035146,9.615966
03-11 07:50:39.014: VERBOSE/AccelerLogService(29277): History Size:
0.15
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
.getSimpleName();
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)
getSystemService(SENSOR_SERVICE);
List<Sensor> sensorList = sensorMgr
.getSensorList(Sensor.TYPE_ACCELEROMETER);
boolean addedListener = sensorMgr.registerListener(
(SensorEventListener) this, sensorList.get(0),
SensorManager.SENSOR_DELAY_UI);
if (addedListener)
Log.v(LOG_TAG, "Listener Added");
else
Log.v(LOG_TAG, "Listener Not Added");
return addedListener;
}

@Override
public void onCreate() {
super.onCreate();
if (timer == null)
timer = new Timer();
if (lastFiveMinutes == null)
lastFiveMinutes = new LinkedList<float[]>();
Log.v(LOG_TAG, "CREATED");
}

@Override
public void onStart(Intent intent, int startid) {
super.onStart(intent, startid);
Log.v(LOG_TAG, "STARTED");
if (intent.getExtras().containsKey("ms")) {
interval = intent.getExtras().getInt("ms");
} else {
interval = 5000;
}
s



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.

 http://github.com/commonsguy/cw-advandroid/tree/master/SystemServices/Alarm/ 


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
necessary.

-- 
Mark Murphy (a Commons Guy)
 http://commonsware.com  |  http://twitter.com/commonsguy 

_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