During the NewsRob/Locale integration I interacted with Carter a couple of times and got the impression that he is a bright, knowledgeable guy. So my assumption is that he knows what he is doing.
Having said that, from his answer that Mark is quoting I can't deduct why he does it. So the only thing I can do hear is speculating, but that's fine with me ;-)
Some background: I think we discussed the issue already here:
And in there I linked to this discussion I started some time ago:
In the last post in this thread Dianne gives an indication that something like this would happen.
The reason is that in Android processes are killed by the OS when memory is needed. Processes that run in the foreground (that means they have something that can be seen directly or indirectly on the UI) have the highest priority and processes that linger around in the background have the lowest priority. Also the garbage collection in Android is not all that great and as a backup strategy processes are sometimes killed and restarted to compact the memory used, starting with the processed of the lowest priority.
It's is very unfortunate that the processed are killed on the OS level without any callback to the app. So many developers gave their background activity the foreground-flag in order not to be killed by the OS so easily. But of course, when everybody does that it doesn't work anymore and the OS cannot be effective anymore.
That means that apps that should use the foreground flag, because the user would recognize a killed process, have now to compete with the twitter fetch service or the gps tracker. Or in other words, your audio might be killed.
In Android 1.6 the foreground-flag was deactivated and in 1.6 or 2.0 the method that is quoted by Carter was introduced. That solves the problem following the Android OS developer's philosophy: Make it transparent to the user! As an app developer you can now set the foreground-flag again, but only if you show a notification, so that the user sees what's going on.
This way not everybody will dare to use the foreground flag and also the user can start loudly complaining / uninstalling when they see this. Unfortunately it is not self evident to the user that the notification flag can mean the foreground-flag could be set, but this is likely the closest you can get in making the user aware of the situation.
So what about NewsRob? As not everybody now uses the flag NewsRob should regularly run through with the synchronization without being killed. Btw. you can check that for yourselves if you have logging enabled and even if you don't you will see something like this "The synchronization started at " + lastStarted + " was ended prematurely." at the beginning of the next sync.
The NewsRob synchronization can be restarted without a data loss. It is not efficient to do so, but if this happens rarely I don't see a problem with it. It means that some articles are not fetched/downloaded during this sync and we'll try again during the next sync, which will be triggered by an alarm, so the process doesn't need to run constantly.
I can't say much about Locale, but maybe the activity is not so easily restartable and cannot be triggered by alarms, but need to constantly monitor something (orientation changes or whatever). I really don't know.
For NewsRob I will not use that new feature unless I'll find out we'll have a situation like from before 1.6 again.
Btw. the 2nd generation phones are not so ressource bound anymore and also I hope that the garbage collector will get better, so in the future the pressure to kill services should become less, not more... I hope.
Btw. Mark I told you to wait for 1.6 and that the interrupted syncs would become much better. You were skeptical at that time ;-) How did this work out for you? Are you using 1.6 meanwhile and does it work better in this respect?