Is onCreated called during an upgrade?
no. Application.onCreate()
called when your application turning on from state it considers "not running" to "running"
application considered running when it's package have one or more active process. it will appear in the running applications list (not all firmwares can show them, but there's lot's of applications showing what packages running, and there is API to get this list) and probably have some running services or activities, but not necessarily! the system can keep your application in "running" state as long as it thinks it nesasery, and will kill it when it need to re-claim some memory, or if you explicitly killed it process somehow (there is also API to that, but no reason usually to use it).
is there another way of running upgrade specific code?
as @Class Stacker wrote:
if you are modifying the version name or number when you realising new version - you can check on your main activity when it creates via the Activity.onCreate()
method the version name, and compare it to the last version name you saved to sharedPreference or database table. then you can implement whatever logic you'd like when you recognize your version is changed.
you can check the version name and number with this code:
PackageInfo pinfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
Integer versionCode = pinfo.versionCode;
String versionName = pinfo.versionName;
hope it helped you, and good luck.