A method of driving a flash device of a handheld electronic device including a number of loads powered by a battery having a voltage, said flash device including a flash current, said method comprising: determining a temperature operatively associated with said battery; determining, before starting said flash device, a plurality of different voltage values corresponding to a plurality of different combinations of said number of loads as a function of said determined temperature; starting said flash device at a predetermined value of said flash current and, during operation of the flash device: selecting a corresponding one of the plurality of different voltage values as a function of: (a) a determined number of said number of loads which are active, or (b) a current flowing from said battery; determining the voltage of said battery; comparing the voltage of said battery with said corresponding one of said plurality of different voltage values; if the voltage of said battery is less than or equal to said corresponding one of said plurality of different voltage values, then reducing said flash current below the predetermined value of said flash current until the voltage of said battery is greater than said corresponding one of said plurality of different voltage values; and after said starting said flash device, repetitively repeating (102,106,108,110,112) said determining the voltage of said battery and repetitively repeating said reducing said flash current if the voltage of said battery is less than or equal to said corresponding one of said plurality of different voltage values. determining a temperature operatively associated with said battery; determining, before starting said flash device, a plurality of different voltage values corresponding to a plurality of different combinations of said number of loads as a function of said determined temperature; starting said flash device at a predetermined value of said flash current and, during operation of the flash device: selecting a corresponding one of the plurality of different voltage values as a function of: (a) a determined number of said number of loads which are active, or (b) a current flowing from said battery; selecting a corresponding one of the plurality of different voltage values as a function of: (a) a determined number of said number of loads which are active, or (b) a current flowing from said battery; determining the voltage of said battery; comparing the voltage of said battery with said corresponding one of said plurality of different voltage values; if the voltage of said battery is less than or equal to said corresponding one of said plurality of different voltage values, then reducing said flash current below the predetermined value of said flash current until the voltage of said battery is greater than said corresponding one of said plurality of different voltage values; and after said starting said flash device, repetitively repeating (102,106,108,110,112) said determining the voltage of said battery and repetitively repeating said reducing said flash current if the voltage of said battery is less than or equal to said corresponding one of said plurality of different voltage values.