检查我的android应用程序更新的最佳方法是什么?

检查我的android应用程序更新的最佳方法是什么?,android,android-studio,Android,Android Studio,我在android studio中创建了一个android应用程序。 我想每天检查我的应用程序是否有更新。如果是,则通知用户下载并安装更新 它应该向我的服务器发送请求以检查最新版本(例如) 然后比较版本,如果从服务器获取的版本大于当前应用程序版本->向用户发送通知并要求他们更新 它应该每天在后台运行一次 此时,设备应连接到internet 我搜索了很多,找到了很多答案,比如使用这些: 广播接收机 工作经理 报警管理器 服务 我面临一些问题,例如: android 7中不推荐使用

我在android studio中创建了一个android应用程序。
我想每天检查我的应用程序是否有更新。如果是,则通知用户下载并安装更新


  • 它应该向我的服务器发送请求以检查最新版本(例如)
  • 然后比较版本,如果从服务器获取的版本大于当前应用程序版本->向用户发送通知并要求他们更新

    • 它应该每天在后台运行一次
    • 此时,设备应连接到internet

    我搜索了很多,找到了很多答案,比如使用这些:

    • 广播接收机
    • 工作经理
    • 报警管理器
    • 服务
    我面临一些问题,例如:

    • android 7中不推荐使用连接更改为
      的广播接收器
    • 服务不是一个好的选择,因为它总是在运行
    • 还有更多
    我想知道哪一个最适合我的工作。以及如何做到这一点。
    提前感谢。

    您应该使用。您可以将其设置为每天运行一次,甚至仅在连接到internet时运行

    在work manager中,您将拨打电话检查您的应用程序版本,然后在有更新时显示通知

    创建类似这样的工作管理器

    val constraints = Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()
    val dailyBuilder = PeriodicWorkRequestBuilder<DailyMaintenanceWorker>(1, TimeUnit.DAYS).setConstraints(constraints) .build()
    WorkManager.getInstance(this).enqueueUniquePeriodicWork("DailyMaintenanceWorker", ExistingPeriodicWorkPolicy.KEEP, dailyBuilder)
    
    val constraints=constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()
    val dailyBuilder=PeriodicWorkRequestBuilder(1,TimeUnit.DAYS).setConstraints(constraints).build()
    WorkManager.getInstance(this.enqueueUniquePeriodicWork(“DailyMaintenanceWorker”,ExistingPeriodicWorkPolicy.KEEP,dailyBuilder)
    
    这个应用程序是在app store中,还是他们手动安装并手动安装更新?@tyczj否他们应该手动安装更新那里有很多麻烦,用户按通知下载文件,然后从文件资源管理器安装,看起来很容易,但对用户来说这是一个很大的麻烦。改装工作经理为我工作。@javdromero凌空抽射怎么样?这对这份工作有好处吗?是的,你没有说太多关于你将使用什么样的请求,如rest、post、get或任何其他,但这两个库都有效,你应该根据你使用的内容检查更好的库。好的,谢谢,但是你能不能也举一个如何注册这个工作经理的例子?我在回答中链接了工作经理文档。还有一个小问题…我应该在我的活动中运行这个代码吗?那么,如何确保该代码在安装之后执行一次呢?或者在清单中注册此工作者的方法?只需在应用程序类中启动它,您就会知道,无论何时启动应用程序,它都会创建工作或保留当前创建的工作。但需要注意的一点是,一些制造商打破了work manager的工作方式,如果你的应用程序被强制退出或从最近的列表中清除,那么work manager将不会开始你的工作。不幸的是,你对此无能为力。你可以看到哪些制造商是最严重的违规者