gpt4 book ai didi

android - 在android中连接wifi时如何触发工作管理器?

转载 作者:行者123 更新时间:2023-12-04 23:12:00 29 4
gpt4 key购买 nike

我的应用程序需要在设备连接互联网后立即同步数据。

我在 Worker 类中有同步工作,并且工作正常。但是我需要在手机连接互联网后立即运行这个类(class)。由于不推荐和不推荐使用广播接收器的连接更改,因此我需要一种在连接互联网时启动我的类(class)的方法,以便数据同步。我怎样才能做到这一点?

我还想在用户存在应用程序并保持互联网连接状态时安排工作经理,但是当应用程序从最近关闭时,不会调用 onDestroy。请问您对此有任何解决方案或逻辑吗?

最佳答案

男孩明白你的意思。
你指出的事情是完全正确的,你应该尽量避免广播接收器,因为现在人们有大量的应用程序,并且在连接互联网后每个应用程序触发请求都会使用户的系统卡住,因为每个应用程序都想发送请求wifi连接后。因此 android 系统附带 JET PACK,之后您不应执行应用程序的操作,而是向 android 系统请求该操作,它们将处理后台请求。

正如上面提到的赛义德

Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
OneTimeWorkRequest onetimeJob = new OneTimeWorkRequest.Builder(YourJob.class)
.setConstraints(constraints).build(); // or PeriodicWorkRequest
WorkManager.getInstance().enqueue(onetimeJob);

但是等等,你想在连接互联网时触发工作,所以你想要一些类似弃用广播的东西来改变连接。
你为什么不做一件事?
每当用户在前台或后台使用时获得的数据都会触发工作管理器。如果您正在对其进行改造,那么当没有互联网连接时它会返回错误,因此您可以在网络故障时安排作业。

所以你的工作将是
  override fun onFailure(call: Call<Chat>, t: Throwable) {
Log.v("chatsyncchecking","sending message failed",t)

if(t is IOException){
Log.v("chatsyncchecking","scheduling chat sync")
(app as App).enqueueChatSync()
}
}

(您可以从应用程序类触发每个请求)

因此,这让您受益匪浅,无论何时连接互联网,您都不应该解雇工作经理。只是在某些任务失败时开火。这也减少了对安卓系统的工作要求。毕竟,我们都是帮助 android 改进的社区,用户可以在手机上获得很好的体验,不会有太多的滞后。希望能帮助到你

关于android - 在android中连接wifi时如何触发工作管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58153585/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com