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.
Nice article
So, what you are saying is, Adobe can’t provide a Flash player suitable for playing desktop content on mobile. Wasn’t that one of Apple’s arguments? 😉
More seriously though, suggesting people who create HTML 5 apps are coding it with mobile in mind is simply incorrect. They have the capabilities of the browser in mind. HTML 5 on mobiles only came into existence relatively recently.
Part of being a good developer is using tools correctly. Tools include which language you code in. Advocating Flash for everything is a bit like creating web pages with HTML string literals in an ASP.NET web app.
Improve mobile web content by using the sum of the technologies available. The recent Google Pac-man doodle was a good example of this. HTML for the inputs and simple graphics manipulation (giving the widest possible audience to the core treat) with the sound provided by Flash (adding that little extra to those platforms which support it).
Being a developer means being flexible. It’s part and parcel of the skill.
>> Advocating Flash for everything is a bit like creating web pages with HTML string literals in an ASP.NET web app.
I’m certainly not advocating Flash for everything – that would be stupid, and if my article implied that then it’s unintentional.
The point of the post was really to highlight how heavy and bloated Flash developers tend to make their content.