First, I've found persisent storage on my 6100 very slow, especially when writing data. It seems to take time *per record* rather than *per byte*; I timed the creation of one record of 10,000 bytes long, versus the creation of 100 records of 100 bytes each (so, same amount of data each time). Creating 100 small records took some *80 times* longer than creating one large one.
So I've substantially re-jigged my app so that it stores multiple logical records into a single physical record as much as possible. It seems faster now.
Hmmm... if the app doesn't terminate normally, the record store reverts to its previous state - all changes are undone. I'm sure that the spec for addRecord() says that it "does not return until the record is written to persistent storage", yet clearly this is not so. Never mind, it beats having the record store corrupted by a flat battery or some such, so I can live with that.
Hmmm-mmmm... if I don't close a record store (my fault, and fixed now), it doesn't get closed automatically on shut-down, and only some changes become permenant. Some new records (but not all) go missing. I can live with this too, now I know about it.
AARRGGHH!! If some as-yet-unknown sequence of events occurs, then reading certain records causes the phone to blank the screen, switch of the back-light, pause for several seconds, then return to it's just-powered-on state. Now, forgive me if I'm mistaken - and correct me, please - but I thought I was writing Java, not C, and that there's nothing I can do that can corrupt the record store, or crash the system so horribly. The worst crime I can commit is to fail to catch an exception, in which case the runtime will catch it anyway. (The phone not reporting any uncaught exceptions at the moment).
Does anyone know how RMS works on Nokia devices? Is there some wisdom I'm missing? My language is becoming increasingly profane, so I would appreciate the benefit of anyone's experience!!