I guess you want to generate samples one by one to keep the "currentTime" variable accurate? This is not a good idea: the moments when onGetData is called, and when the samples are actually played, are unrelated. And no, providing samples one by one won't work anyway.
The samples times must be virtual, not synced to the real time. Increment time by 1/44100 at each new sample and you'll get a perfect sine wave. And now, you can generate as many samples as you want at each call.