我正在编写我的Android应用程序的新版本,升级后我需要执行某项任务。有没有类似于onUpgrade用于Sqlite而是用于整个应用程序的东西?
如果没有类似的东西,我假设我可以在共享的prefs中存储一个标志,说明应用程序已经升级,但我不想每次有人打开应用程序时都运行检查。
谢谢!
答案 0 :(得分:1)
不幸的是,没有。最简单的方法是将该标志保留在持久内存中,可以在实例化应用程序对象期间进行检查。如果您有兴趣保持新手时间尽可能短(谁不是?),您可以使用DataOutputStream和DataInputStream将版本作为整数存储在普通文件中。这样你就可以远离解析SharedPrefs文件的开销。
答案 1 :(得分:1)
只是为了澄清,这确实是可能的。
1)创建 BroadcastReceiver
2)让Receiver 听取以下意图(min sdk 12)
<receiver android:name="MyUpgradeReceiver">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
3)在接收器的onReceive方法中,您可以获取新版本信息 PackageInfo pInfo =
context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
int versionCode = pInfo.versionCode;
4) 将它与旧的进行比较 - 例如我们始终在共享首选项中保存版本,以便我们可以将其与新版本进行比较。在接收者的每次呼叫中,首选项中的版本信息都会更新