All great info, but I think it's missing a big part of the equation, namely why you can get lock in less than less than 10 seconds sometimes, or take more than 3 minutes, on the same day in the same location:
You'll notice that oftentimes you get satellite lock almost immediately if you plug in a new battery after flying your first battery.
The reason this happens is because the GPS has its own button battery, for saving satellite data. When you first boot up a GPS, it has to download telemetry data directly from the satellites, that tell the GPS things like satellite health, orbital information, predicted positions in the next few days/weeks, clock corrections, etc. Some of this information is broadcast by each satellite for all satellites, some of it is satellite-specific. Some of the data is good for months, some of it only good for 30-minutes or so. And it's broadcast on a 30-second or 1-min interval.
So, aside from the "standard" metrics of number of satellites visible overhead and signal strength, you also have this almanac and ephemeris data that has to be refreshed every few minutes or few days, or if you take a flight to a new region and boot up. If the info is stale, it needs to be re-downloaded. If you don't fly for a week, or your GPS battery is dead, it may take 2 minutes to initialize everything and get lock. If you change a battery between flights, or fly the next day, it may be much faster.
All GPS units have to deal with this. Some internet-enabled GPS (like your phone) tend to be much faster because they can download this data online rather than through the slow satellite broadcasts (aGPS); and they also pull tricks like wifi/cellular triangulation to help as well.