My game runs well on most phones (56 FPS), but others run the game at ~25 FPS. In my game I have 3 particle systems and as far as I can tell the problem comes from here. My question: Is it a good idea to stop spawning particles if I detect FPS lower than, let's say 30? An if the FPS is higher just run normally. I'm not sure if this can cause any problems. Is there any other solution?
I can think of several things you can do to help alleviate this problem.
You could use your method to detect the fps and then drop the particle systems if necessary. However, you don't have to poll it every second - you could do it once every ten seconds or so. If you do have a low frame rate, then you know the phone is going to suffer every now and then, so then you dont need to poll any more - you can lower the particles and stop polling.
Or, you could use the polling method with several "levels" of particle effects, so if it cant handle the top level, drop the the next level of complexity, and so on.
Also, you could even allow the user to manually adjust the particle effects, ie in an option menu allow them to switch them to a low setting or something.
Perhaps you could also profile devies on runtime, ie how many cores, graphics chip etc and adjust accordingly.
Make sure your particles are optimized etc, so you dont have unecessary texture sizes when they could be smaller etc, but i'm sure you've probably done this!