This year’s Google IO event was pretty exciting, especially for those interested in the future of Flash. It has certainly been a long time in the making but Flash Player 10.1 finally made its public appearance on Android 2.2 devices, promising to bring the ‘full web’ to mobile. If that wasn’t enough, Adobe also revealed the availability of the public beta of AIR 2.5, enabling developers to create apps for Android 2.1 devices and above.
But whereas official videos from Adobe (see video above) and Flash Platform evangelists show 10.1 running beautifully on devices such as the Google Nexus One, other sources on the web are quick to show their Android devices nearly chocking to death while playing Flash content. One article in particular from Mobile Crunch entitled ‘Flash kills browsing in Android 2.2 Froyo‘ (see video below) shows a particularly poor user experience while scrolling around pages that contain multiple Flash instances.
The video’s presenter went as far as stating that he felt that the current beta of Flash Player 10.1 wasn’t quite there yet and the sluggish performance was perhaps due to 10.1 still being quite buggy. In fact, he suggested that you uninstall Flash Player 10.1 since in his opinion ‘it’s just not ready yet’ and ‘really slows down page scrolling and page loading’.
So is Flash Player 10.1 for Android really buggy? Are Adobe’s Flash Player engineers just lazy? Is Flash just too slow to ever run well on mobile? Well I believe that the answer to all three questions is no, but I do feel that the issues we are seeing are mostly due to Flash’s phenomenal success over the past decade. It’s the Flash content that users are trying to run that’s more likely to be the problem rather than anything fundamentally wrong with Flash Player.
You see, as Flash developers we’ve had it too good over the years. Be honest, how many of you guys out there ever write Flash content with CPU or memory consumption in mind? Until now we haven’t had to. Desktops have been easily good enough to handle almost anything we’ve thrown at them over the years. Running low on memory just isn’t an issue on a desktop and Flash’s software renderer can run quite comfortably on even a modest PC.
Unfortunately this has led to increasingly bloated Flash content over the years that soaks up system resources without caring about the consequences. Banner ads are perhaps the worst for it. I’m convinced those who create Flash banners have some sort of competition going to see who can consume the most system resources. To make matters worse, sites that serve these banner ads tend to display several of them at once, requiring multiple Flash Player instances, which further impacts performance. If you need proof, just head over to any site that contains Flash banners ads and check the CPU usage. I bet your desktop’s CPU is close to melting.
In the face of the continuing HTML5 v Flash debate this post possibly makes for distressing reading. We’re constantly seeing great HTML5 experiences that run not only on desktop browsers but quite comfortably on mobile too. Does this mean that HTML5 and JavaScript perform better on mobile? To be honest that’s difficult to say for sure and really depends on whose performance metrics you look at.
For Flash to succeed on mobile we need a new mindset from Flash developers. We need to learn to optimise for mobile. To find as many ways as possible to write content that runs just as well on mobile as it does on desktop. Those with Flash Lite experience will already have a head start and I’m sure many Flash Lite developers will tell you that it’s not really that difficult. It just takes a little discipline and some common sense. Experiment and try to keep your display lists as flat as possible.
Trust me it will be worth the effort and your reward will be the additional traffic your site will receive from mobile visitors surfing on their Flash 10.1 enabled handsets. It doesn’t have to start with new content either. Spend time optimising your existing Flash content and if your site also serves Flash banner ads you might want to consider removing or replacing them with static images for mobile visitors. It’ll improve the user experience and ensure that the Flash content you really want the users to see runs without a hitch.
If you’re serious about your user experience and want to increase traffic to your site then get your hands on a few Android 2.2 devices and keep testing your content on them. Going forward there really is no excuse for writing Flash content that performs badly on mobile and continuing to do so would be a disservice to the platform we’ve all grown to love over the years.