building blocks

December 21, 2011 @ 21:21

I was reading an article today, a comparison of application life-cycles in Windows Phone 7 and Android, and while the article is for the most part correct, many of the statements are made in a slightly misleading manner. After a bit of pondering, I realized why this is.

Imagine that we have two children, Alice and Bob, who have a bag of 100 LEGO blocks. They’re building small houses.

Logical process

Initially, Alice and Bob each take half of the blocks and build a house. A bit later, Alice decides to rebuild her house with half as many, so now she has 25 blocks in her house, and in a spare pile. No problems so far.

Bob discovers he needs a bit more blocks, so he asks mom to help him out. Mom notices that Alice has 25 spare blocks, so she puts them back into the group pool. Bob then takes another 10 blocks and finishes his house.

A Windows user’s perspective

Okay, let’s restart. Alice and Bob build houses of 50 blocks each, then Bob takes his apart, and rebuilds with 25. He now has 25 in his spare pile.

This is where a Windows user would say to Bob, “Hey! You aren’t using those! Put them back!” Have you noticed this happen? Even though Bob wasn’t using the blocks, they’re still in his pool. But this isn’t a problem, since so far, nobody else has asked for more blocks.

The average Windows user immediately complains when they don’t have “free memory.” But if you think about this, “free memory” is really just “wasted memory” because it’s not in use. Why did you pay for that extra gigabyte anyway?

Android

A common “complaint” about Android, usually from users of other phones is that you can’t close applications in Android. For the most part, this is correct, there’s no simple way to “close” an application - but why did you want to? Unless the application is specifically written to run things in the background, once it’s no longer the foreground application, it’s not running. “But wait!” you say. “It’s still using up memory!” Yes, yes it is - but until you need that memory, why do you care what else is using it? Android will happily shoot that other app in the head and steal its memory for you - but only if you actually need it. But if you don’t, and you want to switch back to that previous application, you don’t have to restart it from the beginning, it’ll just pick up where it left off. This is GOOD, it’s an advantage.