如何仅在我的应用程序更新时运行代码

时间:2013-01-29 06:43:33

标签: android

  

可能重复:
  How to know my Android application has been upgraded in order to reset an alarm?

当我的Android应用程序只更新时我需要运行某个代码(我特意想重新安排闹钟)。

对SO进行了广泛的搜索,我发现人们建议使用SharedPreferences。我不认为这是正确的,因为sharedPreferences可以在重启时删除或只是清除缓存。这意味着当我的应用程序更新时,共享首选项可能不存在,我可能不知道它是更新还是只是全新安装(甚至更糟糕的重启)。

那么,还有其他方法吗?也许某种意图或某种方法执行(有点像onUpgrade for sqlite)。

请指教。非常感谢你

2 个答案:

答案 0 :(得分:1)

SharedPreferences是最好的方法。除了您所描述的内容之外,如果用户再次卸载并重新安装,它将被清除。如果这对您来说不够好,则需要将最后安装的版本保存在服务器上,但这意味着您无法在离线时运行测试。

答案 1 :(得分:0)

onUpgrade for sqlite只需检查数据库是否存在,然后是什么版本。如果当前数据库的版本低于APK中的版本,它将清除数据库并使用新数据库更新数据库。 同样,如果清除应用程序缓存。包括数据库在内的所有文件都将被清除

同样,您可以在应用程序中实现:

喜欢有一个静态的public int version = 1000;在你的应用程序中在创建检查时,如果SharedPreferences包含版本(即使SP不存在),它将返回已保存或默认方法。

如果SP版本的值小于代码中的当前版本。使用您打算使用的更新功能。

如果用户卸载并重新安装了应用程序,那么您可能还想再次注册您的电话。