Slashdot Mirror


An Android Developer's Top 10 Gripes

gkunene writes in with the plaint of a veteran mobile application developer who vents his frustration with a list of 10 things he loves to hate about Android. "1. Open Source. Leave it to Google to place all the code for their handset platform in the hands of the masses. Not only does this mean anyone can download and roll a new version of their phone firmware, but it also means absolutely any maker can roll its own Android device. ... After all's said and done, I really must admit that Android, despite its relatively few flaws, is one of my favorite platforms to work with. Quite honestly, if my complaint about how the word 'Intent' makes for awkward grammatical constructions ranks in the top 10, I'd say the Android platform is doing pretty well for itself."

40 of 272 comments (clear)

  1. What? by MortenMW · · Score: 5, Insightful

    Disclaimer: I actually read the FA (yes, I know this is slashdot). This guy is angry because, amongst other things, Google has made 40% of his debugging skills useless. Apperantly, his problem is that this means that other people without his "superskills" can develop software for Android.

    1. Re:What? by dkleinsc · · Score: 3, Interesting

      He does have one very legitimate concern, and that is that the platform can easily be forked, potentially ending up in a situation like old-style Unix, where each vendor had different incompatible versions of Unix (HPUX, AIX, etc).

      That said, most of his other stuff sounded like "You're making it way too easy to use to create applications!"

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    2. Re:What? by davek · · Score: 5, Insightful

      Sounds to me that he's searching for things to have a problem with, and fully admits it. At the very end of the article, he responds to
      his own point 7, where he complains about the grammatical heresy of the Android programming concept of "Intents":

      Quite honestly, if my complaint about how the word 'Intent' makes for awkward grammatical constructions ranks in the top 10, I'd say the Android platform is doing pretty well for itself.

      If "good debugging" and "poor grammar" are two of the top ten worst points about the platform, then I'd consider it quite a positive article.

      --
      6th Street Radio @ddombrowsky
    3. Re:What? by delinear · · Score: 3, Funny

      He will, so long as his phone's not forked.

    4. Re:What? by LWATCDR · · Score: 4, Insightful

      Not really.
      He hates Java. A lot of people seem to feel that way. I actually like Java more than say c++ because I find the Java object model has a less of a tacked on feel.
      The big problem is that he doesn't like the "fragmentation" which is a valid concern for a developer. You have a number of different screen sizes to deal with, you have a number of different cpus that run at differn't speed to deal with you way to many different versions to deal with, and you have what ever custom sillyness that the vendors may put in to deal with.
      On thing that is very nice for developers about the iPhone is that it is a very consistant controlled enviroment. It is much more like developing for say a game console than for a PC. That makes hidden gotchas less of an issue.
      Android is a lot more like a PC.
      So you are half right.
      Android makes it way to easy to build simple apps but makes t more difficult to produce top notch professional apps than the iPhone does.
      How true that is I don't know since I have yet to dive into the Android SDK but even now I wonder which SDK do I write too? 1.5 which seems to be the most common. 1.6, 2.0, or do I leap to 2.1 and hope everybody updates by the time my app is done?
      It is EXTREMELY annoying that there are so many different versions of an OS all of which are shipping on phones right this second!

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    5. Re:What? by gabebear · · Score: 2, Informative

      It was done by Moto Labs, which has nothing to do with Motorola. http://labs.moto.com/diy-touchscreen-analysis/

    6. Re:What? by Unoti · · Score: 4, Informative

      He hates Java. A lot of people seem to feel that way. I actually like Java more than say c++ because I find the Java object model has a less of a tacked on feel.

      I generally agree with you sentiment. Generally we don't get to take advantage of a lot of that, though. When working on a performance critical app, such as a game, most of the code you're going to write is going to look and feel more like C++ than Java anyway.

      Avoiding garbage collection is a key thing that's always top of mind. So you end up pre-allocating all your stuff, thinking about the cycle of memory management constantly. I'm constantly using plain old arrays instead of collections for performance reasons-- every time you iterate through a collection it generates an iterator that needs to be garbage collected. They recommend you shy away from Enums, because each access requires a lookup. They recommend you avoid encapsulation of getters and setters when you can and just access things directly for better performance. They recommend you use parallel arrays instead of composite objects when you can.

      I guess the point is that the Java you're coding on Android, for performance critical apps at least, feels a lot more low level, takes more time to write and get right than normal desktop or server Java. Sometimes I feel like I'd rather have that extra bit of performance and be directly in C++ as long as I'm having to deal with so much low level stuff.

    7. Re:What? by LWATCDR · · Score: 5, Insightful

      For some games I would agree with you 100%. And Android does allow you to use native code for some performance critical parts but as the original author stated then you have to debug in two languages.
      I don't hate C++ and I have used it for high performance applications. The thing is that I feel that Java gets too much hate. The "problem" with Java it it is too easy to make a program that works. Because of that you get too many people putting out Java programs that work but don't work well. In C++ they just wouldn't work at all.

      I still feel that the real problem with Android is in many ways the openness of it. I wish that Google would get EVERYBODY on the same version. I am tired of waiting for Samsung to update my phone to 2.0 or 2.1. It is just silly that Motorola released two phones in the same time frame and one has 1.5 and one has 2.0! or that Verizon released two Android phones on the same day and one had 1.5 and one has 2.0. Or that T-Mobile has phones with 1.5, 1.6 and now 2.1!
      This fragmentation on such a new platform is just insane.
       

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    8. Re:What? by uberjack · · Score: 2, Insightful

      He does have some valid complaints though, specifically #6 (so _why_ can't I write an entire app in C?), #3 (Android's management of running apps is still a mystery to me), #8 (I've received complaints that my app's icons look low-res on Droid, and not having one, there's not much I can do short of buying a new phone for testing) and partly #5. With regard to #5, however, you can easily weed out poorly written applications within a day's use of them - for example, I uninstalled Google Listen after two days of use, as I noticed that it cut my battery life by 50%. I don't agree with him that Android needs to follow the same design paradigm as other platforms, but I may be biased, as I never developed for any other mobile platform. As odd as Intents and Activities seem, the end result is not a bad one at all, and is even fairly intuitive in many ways (my favorite analogy is Intent==POST request and Activity==web page).

    9. Re:What? by tweek · · Score: 2, Interesting

      I wish that Google would get EVERYBODY on the same version. I am tired of waiting for Samsung to update my phone to 2.0 or 2.1. It is just silly that Motorola released two phones in the same time frame and one has 1.5 and one has 2.0! or that Verizon released two Android phones on the same day and one had 1.5 and one has 2.0. Or that T-Mobile has phones with 1.5, 1.6 and now 2.1!
      This fragmentation on such a new platform is just insane.

      That's the whole point of http://google.com/phone

      Google has realized that the fragmentation has been killing development. Combine that with UI changes and it can be a nightmare for developers.

      However I'm of the opinion that you should only develop for stock Android of a given release. I just want to slap people who post stupid fucking comments on the app store that "X" doesn't work with Cyanogen mod Foo. The risk of running unsupported firmware is that it doesn't work. You knew that going into it. Why should people cowtow to you?

      The point is that the HOPEFULLY with the google store for Android powered phones, they can drive the market to stick as close to stock Android as possible. I would hope that Sense UI and Motoblur devices would be kept off the official Google store or at least come with a disclaimer that this is a customization and that not all apps will work with it.

      Additionally, Google needs to implement some sort of automated app scanner that determines if the app is making 1.6,2.0 or 2.1 compliant system calls and version the apps presented in the store to each device as supporting that release.

      I have no idea what to do about the screen issue though but I think it's going to come down to two differentiators - Android Powered (Sense UI, Motoblur, whatever Sony is calling their version) and Android Experience (stock - DROID and Nexus 2). Maybe "Android Experience" dictates a fixed screensize or some basic level of specification.

      --
      "Fighting the underpants gnomes since 1998!" "Bruce Schneier knows the state of schroedinger's cat"
  2. Unix way by Nikademus · · Score: 4, Insightful

    "Android, by contrast, pushes you to design everything as small, self-contained mini-applications."

    Hey, that's called the Unix way.

    --
    I gave up with the idea of an useful sig...
    1. Re:Unix way by dunkelfalke · · Score: 4, Insightful

      But then again, so is Cobol.

      --
      "It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
    2. Re:Unix way by fredrik70 · · Score: 2, Informative

      Indeed, the cool thing is that Activities can be shared between processes, My app, for example, can for example make use of Google's picture browsing or the google map activity , no need to write one myself.
      Activities are placed on a stack, so when the user hits the back button to leave the 3rd party activity they are returned to my activity

      --
      if (!signature) { throw std::runtime_error("No sig!"); }
    3. Re:Unix way by lokedhs · · Score: 4, Insightful
      And is still fine for mobile devices almost 40 years later.

      Imagine that, a software design decsision that worked. It's almost like the people who designed Unix were smart guys who knew what they were doing. Who would have though it?

    4. Re:Unix way by djdavetrouble · · Score: 3, Funny

      Stop you guys, I am running out of paper rolls on my teletype.

      --
      music lover since 1969
    5. Re:Unix way by dunkelfalke · · Score: 3, Insightful

      I've grown up a bit since then and had to develop for Linux not as a hobby but for money. Nowadays I prefer less work and more comfort to be honest.
      Unfortunately honesty gets a -1 Troll here nowadays.

      --
      "It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
    6. Re:Unix way by HunterD · · Score: 5, Insightful

      Simplicity is hard. Programming the Unix way requires a person to focus on radical simplicity. The benefits are huge. It's a lot easier to debug a 200 line program that takes data in on stdin and dumps it to stdout then it is to debug a class that you can only instantiate with your AbstractFactoryFactory.

      The mistake that younger developers make is seeing complexity as hard, and representing mad skillz.

      When you have a complex problem that you need to solve, it's /easy/ to make a complex mess with awesome hacks that only you can figure out. It's *hard* to solve that complex problem by building simple programs that even the most junior programmers can easily read, interpret and debug. IMHO, complicated designs are a sign of inexperience, not '1337ness'.

      --
      - The unexamined life is not worth leading -
    7. Re:Unix way by GooberToo · · Score: 4, Insightful

      Simplicity is hard.

      We have a winner!

      Can't tell you how many times I've run into coders who believe complex = elegance. Or even worse, terse, cryptic coding is elegant.

      Simplicity is its own reward - and a bonus for the developer who follows.

    8. Re:Unix way by Unoti · · Score: 2, Insightful

      It's true. It's also easier to develop in Visual Studio .NET for the Compact Framework than it is for either the Android or the iPhone. Windows Mobile was early to market, and a great development environment for handheld devices for things like warehouses and similar applications.

      But Windows Mobile is also getting smoked, for whatever reasons, and the app stores are at least part of that story. A user experience that's not optimized for fingers is probably another. WordStar dominated the word processing market for a while, but was overtaken and is now a distant memory. That's where Windows Mobile is headed.

    9. Re:Unix way by sarhjinian · · Score: 2, Insightful

      But Windows Mobile is also getting smoked, for whatever reasons

      It's getting smoked because, outside of the very specialized vertical-market stuff made by the likes of Intermec or Symbol (for warehouses, losgistics, medicine, etc, as you noted), the devices suck. Oh, sure, the hardware isn't too bad, but the user experience is generally wretched.

      Android is actually making similar errors. TFA is right to note the fragmentation of the platform: unlike the iPhone (or, to a lesser degree, Symbian and Blackberry), you're having to deal with any number of permutations of screen, OS, installed applications, store restrictions, etc. Android has the benefit (over WM) of not being completely horrible to use, but it's still nowhere near as unified as the iPhone. It's pretty good, but when you can't even guarantee that email will work the same way on every device (let alone how different handset makers are bundling their own UIs), you've got problems.

      And no, this isn't going to be a repeat of the "Mac vs. PC" wars of two decades ago, if for no other reason than customers today aren't as likely to be enthusiasts, and aren't going to put up with the inconsistent experience these devices provide. If Apple (and RIM, again to a lesser degree) has taught us anything, it's that interface polish matters int he consumer market: you can't shove half-baked technology at people and expect it to go well. You'd think Google would have noticed the bitch of a time Nokia is having because they're terminally incapable of making email work as well as RIM, or the pistolwhipping the iPhone is giving Windows Mobile. Near as I can figure out, it's because Apple and RIM a) recognizes it's customers are the people who buy the phones and b) set their priorities by what users need, rather than their developers preconceived notions.

      Disclaimer: I actually use a Nokia E71 and really like it otherwise, but I can't believe a company like Nokia would be so foolish as to sell a business phone with such pitiful messaging features. Similarly, I can't believe a company like Google, which has made it's name offering a clean and consistent web presence would so badly fragment the experience on it's handheld.

      --
      --srj/mmv
    10. Re:Unix way by Qzukk · · Score: 2, Insightful

      Linux distros could solve a lot of the dependency problems by simply allowing multiple versions of the same package to be installed side-by-side

      Sort of like how debian can install libgtk1.2 and libgtk2? This has been around for quite a while.

      There are two problems here:
      Developers use cutting edge libraries that are released before the distributions release new versions (like using libqt 4.6 when debian has 4.4), and that people don't want to bother with the package system (which would Just Work when you use libraries supported by the distribution).

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
  3. And still ... by Zarf · · Score: 2, Interesting

    ... even with these valid gripes I can't imagine developing on any other platform available for the cell phone. The "Intent" is an odd term but the concept it powerful. Java is a pain but it is accessible. Most of the platform complaints deal with the novel programming style Android uses. It's an event based style with an MVC-esque pattern. Very unusual. Perhaps unusual in a good way.

    --
    [signature]
  4. Re:dumb article/crappy developer by FlyingBishop · · Score: 2, Insightful

    Point 4. Applications Never, Ever Quit

    Actually, this is a developer sin. Pandora does in fact have a functioning quit button (alone among all the apps I have tested. And there are a variety of task killers. The lack of a built-in task killer is a really stupid design flaw in Android, but applications can quit.

  5. veteran mobile application developer ? by ardiri · · Score: 3, Insightful

    >> how long does it take to be a "veteran mobile application developer?"

    checking out his profile (http://www.linkedin.com/pub/chris-haseman/1/369/a32) he has barely touched the majority of mobile platforms :) where is his symbian, palm os (68k, arm), ebookman, embedded linux, psp, nintendo ds, experience? surely - some of us started this stuff professionally back in the late 1990's with devices like the newton and palm professional. boy how things have changed - yet some things stay the same. he announces himself that ""(and by "in my day," I mean two years ago)"".

    >> 3. Device Debugging

    be thankful - some platforms you still need to do printf() style debugging.

    >> 6. Java—Thanks, But I'll Take It from Here

    Java - probably the worst language used on mobile devices to date. the desktop and server platform has evolved in many ways which are not being reflected in the mobile space; due to battery life, talk time etc - the typical moore's law of computing doesn't apply to mobile phones. there was a period where CPU speeds dropped on mobile devices - hopefully things will change coming up with new ARM and low powered x86 CPU's - but time will tell.

    A true mobile developer demands a native C/C++ interface on mobile devices - if you want something done, more than a bouncing ball on the screen - its the preferred way. NDK under Android is a must - C/C++ isn't that bad - if you know what you are doing.

    >> 8. Platform Fragmentation

    its a problem? come on - seriously. you deal with it. you design around it; thats where your years of experience really kicks in and allows you to build cross-platform applications without issues. just because most companies hire an outsourcing department or "specialists" on specific platforms isn't a problem - it is a choice. there are plenty of alternatives out there.

  6. Re:dumb article/crappy developer by PianoComp81 · · Score: 2, Interesting

    Point 2. The Tyranny of the Activity

    Android, by contrast, pushes you to design everything as small, self- contained mini-applications

    That sounds a bit like the old UNIX principle. And what's wrong with having applications that do small things and do it well. I don't want a picture application with it's own twitter functionality, I have a proper twitter client for that. etc.

    The biggest reason he gives while this is bad is because it destroys then recreates an activity upon rotating the screen. What I've noticed on my droid is that application refresh the screen when the screen is rotated. To get around the refreshing, developers have to hack around google's API.

  7. Re:dumb article/crappy developer by Darth_brooks · · Score: 2, Informative


    Maybe this is a new feature in Android 2.x. But the list of applications you get when holding down the home button is not "running applications" but simply a list of recently started applications. When I leave an application and it has no active processes then it won't show up in the process list. So, I'm quite sure it's not running.

    Fire up something like advanced task killer and see what your memory utilization is like. He has a point, getting an app to "close" in the sense that it's not running and not hogging memory is a problem with Android.

    --
    There are some people that if they don't know, you can't tell 'em.
  8. Obviously an inexperienced Android developer by Maxmin · · Score: 2, Informative

    1. What are you complaining about? Of course it's a legal grey area, those are some of Google's primary products - why would they make it easy for you to slap Google Maps into a thin wrapper, insert adverts, and call it "Chris's Maps"? Go write your own, silly boy.

    2. You are required to declare *exactly one* activity and intent. After that, it's up to you how you stitch together your app's UI elements. The point of multiple Activitys is that they're a) modular, b) stackable, c) can be swapped during low memory events, and d) can have their state preserved by the platform upon exit. Personally, I prefer a low number of activities, then use other UI elements to add navigational depth.

    3. New to software development, eh? Over the next 5-10 years, be prepared to learn new and discard old, that's the profession you've entered (recently, it seems.)

    4. "Never quitting" is merely the default. It's up to you to detect navigational or logical termination of your app, and invoke the necessary methods to bring it to an end. The reason for this is that, hey! it's a phone, call might come in! and it's a multitasking O/S! Another app's Activity may suddenly be running on top of yours, and you may not want to exit just yet, hmm?

    5. Finally, a real problem. Yes, there are apps that leave background processes running continuosly, disregarding the device's sleep state. These are from bad developers -- learn well from their mistakes. Also, you don't have to use those apps, just uninstall them, and also install Power Manager which will extend your battery life.

    6. Watch the video "Writing Real-time Games for Android," wherein you will be introduced to some key concepts around embedded and real-time software development. First and foremost, STOP DOING THINGS THAT INVOKE THE GC! Cool it with excessive + string + concatenation and start using StringBuffer. And preallocate objects to that end as well. Et cetera.

    7. Intense, dude. Having developed for Blackberry, all I can do is throw my head back and laugh, laugh hard. Android is a V12 Ferrari next to Blackberry's three-cylindar commuter tin can.

    8. If you'd read Google's Android documentation, you'd realize this point was moot, thanks to the carefully spelled-out guidelines that will keep your app looking and behaving the same across various screen sizes. True that you'll have to *think* about how to handle an 8x10 format screen in your app, but that's no different than any windowed platform.

    9. You start out whining about "platform fragmentation," then return to your point #1. Whatever. Platform fragmentation may, indeed, become a problem one day, but you haven't defined how that will happen, in your point.

    10. If I'm not mistaken, Nexus One equals (or eclipses) the iPhone's raw computing power. 1 GHz, GPU, though low on RAM and flash comparatively. I'd rather have a platform with greater RAM, but the architecture of Android is such that it is *meant* to run on low-capability devices.

    Apart from the author being a newbie, did we all misread it as not being a spoof??

    --
    O lord, bless this thy holy hand grenade, that with it thou mayest blow thine enemies to tiny bits, in thy mercy.
  9. (Potential) iPhone Developer's Top 1 Gripe by Comboman · · Score: 2, Interesting

    1. SDK only available for Mac.

    --
    Support Right To Repair Legislation.
  10. why Java? by ShenTheWise · · Score: 2, Interesting

    My single Android complaint: Why, oh why must it be Java based?

    1) Sandboxing in Android actually happens at the Linux process level. Every app run its in own isolated process, with its own instance of the Java VM. You can remove the VM form the picture and it would be just as safe.
    2) You cannot build once run everywhere. Its a myth. With J2ME phones, devs test and optimize for every supported handset, and it will be the same for Android.
    3) Java *IS* an order of magnitude slower than C/ASM for many things that are important for games, such as matrix math. Google knows this and is trying to work around it with JNI/NDK, but really why the complication?

    I guess its too late now, but it makes me very, very sad.
    (And makes Apple very, very happy)

    1. Re:why Java? by Unoti · · Score: 3, Interesting

      3 isn't really applicable as not only is it optimised for it's own version of java, but you have the option of writing C anyway.

      GP's point #3 was about C++ being more efficient by a lot. His point actually is valid. Consider all the things you need to be mindful of when writing efficient Android apps in Java There are so manu things that you need to be careful not to trip over, even in Android's optimized Java. Things that a C++ compiler would optimize out no problem. Generally Android's java is very optimized and is terrific and surprisingly fast, but it's still no C++ in terms of performance. But it's also easy to write for generally and very approachable, so I'm not complaining. Just saying that Gp's point #3 should not be dismissed entirely without due consideration.

  11. Re:dumb article/crappy developer by Anonymous Coward · · Score: 2, Informative

    There is a built in task killer, at least in DROID.

    Settings -> Applications -> Running Services.

    The only program I've found that doesn't quit properly is the Music application that comes standard on the DROID. Even after quitting (either by pulling out headphones or stopping music and exiting out of the application, I still see it running in the "Running Services" list.

  12. Re:dumb article/crappy developer by El_Muerte_TDS · · Score: 2, Interesting

    Despite your undying love of google forcing you to accept everything from them (i'm liberally assuming here), there some legitimately complaints.

    Heh, not really. There are a lot of things I think suck the Android, mostly with various standard applications. For example: no proper file browser in the music player; crappy email client which can't handle larger mail directories; no "update all" for through the market; unreliable bluetooth support (although, it could be just my phone); no vector based user interface (specially an issue now that other resolutions are starting to appear); etc.

    The ammount of mini apps running around go directly against the idea that's been creeping around of making applications run on less files, like Mac application structure, or so i've heard, does, while the running applications it's a very valid point.

    That's not per se an issue with Android but with application writers. Your application shouldn't start a service when it doesn't need to (looking at you "Astrid", I don't have any reminders). An application should do what it was requested to do and then stop. But other applications need to remain active in the background, like my SSH client

  13. 5. Developer Cooperative by Unoti · · Score: 2, Interesting

    tragedy of the commons: the misuse and overuse of a collectively owned resource. In the case of Android, that common resource is the memory, processor, and battery life of the handset. The tragedy is that any application, while in the background, can use any amount of resources.

    This isn't exactly true. Apps only get to use 16 megs of memory on Android. Sounds like a lot, but it's not, especially if you're working with 2d graphics. That's actually something that's causing a lot of difficulty for me in game development on Android. A 1000x800 image is 3.2 megs by itself (1000 x 800 x 4 bytes per pixel). Put a couple of sprite sheets into memory for animation and you're rubbing elbows with the limits.

    The point from the article about apps being unconstrained and able to ruin each other isn't really true, at least not for memory. Perhaps the problem the author cites is more of a problem on Android platforms with only 64megs of memory to work with in total. On my Droid, I am saddened by the opposite problem: only being able to use a small portion of my device's memory.

    1. Re:5. Developer Cooperative by GooberToo · · Score: 2, Interesting

      Apps only get to use 16 megs of memory on Android.

      That's actually not true. That's a hardware manufacturer's limit and can vary from device to device. Android itself places no such constraint on application memory. The limit is set on a per hardware basis.

      From a programmer's perspective, that likely means supporting the lowest common denominator, which is entirely a different issue. Though pragmatically for you, that hardly makes a difference.

      You might check and see if the limits are accessible at runtime which will allow you more adaptive flexibility in your applications.

  14. Re:dumb article/crappy developer by GooberToo · · Score: 2, Informative

    Actually, this is a developer sin.

    Actually its not.

    Why Task Killer is for ignorant fools... ....and why you're fighting Android...

  15. Re:dumb article/crappy developer by GooberToo · · Score: 3, Insightful

    Granted, it doesn't chew battery, but it's a cleanness thing. They should be playing by the rules.

    They absolutely ARE playing by the rules. You just don't know/understand the rules.

    Most android apps don't, even Google-provided software. The Exchange calendar client continuously starts up even though I don't have a calendar configured.

    Unused applications are services are terminated by the system. Unused memory is a waste. The Android framework is in charge of all application and service life cycles.

    Really the only problem is that many developers are abusing services when they should be requesting the service be terminated. Or worse, they are starting the service as a persistent service rather than an on-demand service. Both of which are application bugs. Regardless of the bug, the framework still manages the service lifecycle, which is why these abusive developers don't fix their bugs.

  16. He's right and he's wrong by amoeba1911 · · Score: 3, Insightful

    This guys is right in some places, wrong in some others. Changing screen orientation restarts the Activity, but you can tell it in your manifest that you don't want it to automatically restart the Activity on orientation change, giving you the control to do whatever you want.

    Android forces you to make the application centered around the Activities, but it's not so bad when you get used to it. It's not necessarily bad, just a bit different.

    The debugging? He's definitely being an idiot about this. How is easy debugging a gripe? He's griping that it makes it easier to debug? No, that's just idiotic. Debugging on the Android is very easy and that's a good thing, not bad.

    Applications never, ever quit? No, that's not true. I made my app quit save and quit when it goes to background. Other people's apps don't quit. You want your app to quit, you can make it so it quits. Also, if app doesn't quit and goes to background, android will automatically close the background app if it needs the resources to run foreground apps. So they do quit, you can program the app to quit, so he's just plain wrong.

    He mentions Java... yes, Java sucks for this. The phone is not very fast to begin with, and running a slow bloated language like Java isn't necessarily the best thing. Java is good for people who don't know how to work with pointers and de-allocate memory, Java is good for people who don't understand programming who want to program things and Java pays for it in performance. Java is like a tricycle compared to low level languages. But the good thing is: it's harder to fall off a tricycle and hurt yourself. With a real programming language you might run into huge problems, late night debugging sessions trying to find where your mistake is. With Java you're playing it safe. Thankfully they provided a NDK, but that's a real pain in the ass, has the speed you want, then has the drawbacks too.
    You can get around Java's slowness by following their program optimization guidelines, things like: don't use too many classes, cache calculation results instead of recalculating things, use native java functions ie use indexOf instead of looping through a string. It makes Java bearable.

    He mentions platform fragmentation. The main difference between Android devices is their different sized screens. Honestly, that shouldn't be an issue, using XML interface it should all look pretty much the same. If you're doing fancy graphics, you have to be smart and use percentages instead of hard coded sizes for things. Coming from a PC background where users might be running 640x480 or 1600x1200, I think we're all familiar with different screen sizes and how to handle them. Going from 320x480 to 240x320 shouldn't be much trouble for a competent programmer. If you can't handle it, stick to XML interface.

    So: Android developing might have it's shortcomings, but they're not as bad as this guy makes it sound. Easy debugging is definitely NOT a shortfall. Also, you can download the android SDK + emulator for free, it runs on Mac, Linux, Windows. Compare that to iPhone, you need to pay $100/year to get the SDK, and even after you get it, you can't run it unless you have a Mac.

  17. What is the opposite of damning with faint praise? by shoor · · Score: 2, Insightful

    The author seems to be praising Android with faint damnation.

    --
    In theory, theory and practice are the same; in practice they're different. (Yogi Berra & A. Einstein)
  18. Re:dumb article/crappy developer by entrigant · · Score: 3, Insightful

    This is nonsense and verging on asinine. I don't mean that as a personal insult as you did mention this is in google's guidelines, but no automatic app manager no matter how advanced knows enough about how I use my phone and how the apps I use function to successfully perform its role.

    Not only are there issues of badly behaving apps draining battery when not terminated, but there are issues of apps with persistent roles such as internet radio, remote terminals, download managers, badly behaving websites with non-interruptible multi page operations, etc.

    When I'm involved in a complex work flow I know what needs to remain up and what can be terminated to free up resources. Some magic voodoo app manager does not.

    Asking for an extra menu entry to quit an application is not too much to ask. The few lines of code it'd require would fit in the tail end of an unfilled memory page. Don't give me any nonsense about compounding memory pressure. If I hit back or home fine, stay up. If I hit menu > quit then by all means terminate.

    There's a reason task managers are among the most popular android applications. In a perfect world with perfect 3rd party apps the magic voodoo app manager might work, and I do appreciate its idealistic goal. The fact of the matter is it doesn't work that well.

  19. Re:dumb article/crappy developer by entrigant · · Score: 2, Insightful

    This statement is contrary to almost every facet of modern computing.

    How so? Do you have examples? While the idea is by no means novel, it is certainly not popular. Nearly every popular general purpose OS leaves application management to the user. In the mobile space some solve it by simply not allowing multitasking to take place avoiding the problem altogether. Resource management via leaving everything on and relying an applications themselves to intelligently save state and handle random termination gracefully is hardly "almost every facet of modern computing."

    There are only two or three ways to immediately terminate an Android application and none are recommended. Some provide negative feedback to the user, further annoying them.

    Yet some of the more reasonably behaved ones managed it. As a previous poster mentioned pandora is one such app, the *oid series of emulators all have a perfectly functioning quite option.

    When Android decides it needs more memory it will terminate applications as it sees fit. That's the end of it, no matter how much you want to complain.

    Indeed, and being forced into this should carry the same stigma as the linux oom process killer. If it goes that far something has gone wrong.