How practical the number of cores in Android I've often wondered how practical the cores usage in Android smartphones. I'm looking from technical perspective. The articles that I've read so far claimed either more cores is good or more cores is a waste because many applications are not optimized for more that 1 core usage.

Regarding the latter one, is not CPU resource allocated by kernel? Is not the optimization the kernel's responsibility instead of the applications (process)?
It's true that in desktop computers many programs are not optimized for using multiple cores, and getting a powerful dual core processor would be a lot better than a less powerful quad core processor in many cases. In many cases, the performance per core will be worse if you add more cores.

However, the Android API was pretty much designed to take advantage of multiple cores. There are rules that make apps crash if you do some operations that could lag the UI, like downloading something in the same thread as the UI. This means if your app needs to download anything, you will have at least two threads running.

You can run two threads on a single core device, but the more threads you run the less time your UI has to update and the laggier your experience is. With multiple processors you can run multiple threads at the same time, making your user experience more pleasant: intensive operations can be done in the background while the UI is still responding smoothly.

Scheduling is indeed handled by the kernel, but the Java API was designed to be heavily asynchronous. This way threads can be managed easier by the kernel. The design of the API which almost all apps follow makes scheduling easier for the kernel.

Another multi core feature that is overlooked by many people is that cores can be disabled individually. This means that if you listen to music on your headphones with your phone in your pocket, only 1/4th of a quad core processor needs to be turned on and consume power.