Switching to mobile theme while cache is enabled
ThemeKey does support the Drupal cache.

However, the Drupal cache cannot perform device specific cacheing on a single domain since page caches are organized by absolute URLs. See this discussion for an explanation: https://www.drupal.org/node/2242303

The solution is to have a device redirect at the server level to a mobile subdomain (ie. m.mysite.com) which shares the same docroot and switches the theme there. The Boost module is recommended and the process is outlined here:

https://www.drupal.org/node/1214890