Facebook takes another stab at improving the News Feed on Android

Facebook's News Feed on Android can smoothly display immersive content

Present at Droidcon in New York, Facebook had some good news for Android users, announcing it has improved the News Feed experience.

As the type of content people normally share on their News Feed has evolved from mere text, photos, and videos to more complex 360-degree video or Live, the challenge is to be able to provide a smooth scrolling experience. As Facebook itself explains “a smooth scrolling performance requires the entire computation for a single frame of the UI to complete in less than 16.7 milliseconds.” If the computation takes too long, the scroll animation will be subject to skipped frames and interrupt the smooth scrolling experience.”

Fortunately, a team of Facebook engineers in New York has come up with a solution to the problem. By taking advantage of tools offered by the two Facebook open source projects – called Litho and Infer, they were able to develop a new architecture designed to smoothly support a variety of rich, immersive formats in the Facebook Android app.

On top of improving the whole News Feed experience, the new architecture successfully executed a type of UI engineering that hasn’t been common on Android up until now – called multithreaded rendering.

Brought on board by Litho, multithreaded rendering separates heavy computational processes that are needed to render UIs into multiple threads. Usually employed for 3D game rendering, the technique is a technically challenging one, but the New York-based engineering team managed to successfully implement it for its News Feed optimization purposes.

Litho joined forced with Infer, which was developing a new tool meant to automatically search for bugs that could arise from working with a multithreaded programming model. Together, the two developed a solution that not only improved the performance of the News Feed but also provided reliable proof that multithreaded rendering can be executed at scale on Android.