gpt4 book ai didi

c# - 如何在不中断用户体验的情况下在后台轮询 webapi 请求?

转载 作者:行者123 更新时间:2023-11-30 01:53:57 26 4
gpt4 key购买 nike

目前我有一个应用程序允许用户将数据发送到一个 Restful webapi,同时连接到互联网,但这个应用程序也应该离线工作。因此,我将用户操作存储在 SQLlite 数据库中。当移动设备找到互联网连接时,此信息应保存到 webapi。我已经实现了

public bool IsConnected(){

var connectivityManager = (ConnectivityManager)GetSystemService (ConnectivityService);
var activeConnection = connectivityManager.ActiveNetworkInfo;

if ((activeConnection != null) && activeConnection.IsConnected) {
return true;
}

return false;
}

这由每个 Activity 的 OnCreateOptionMenu() 调用。哪个工作正常。但是,当我发出 webapi 请求时,遗憾的是同步调用会导致应用程序显示空白屏幕,直到它处理完为止。现在这是我想要替换的用户体验,类似于 ASYNC(异步)请求,它可以在后台无中断地运行所有内容。但我正在努力实现这一点。我在应用程序主屏幕上确实有一个同步按钮,onclick 运行异步调用但是我不相信应用程序用户按下这个按钮。因此,我想在后台触发这项工作。有人可以建议吗?

最佳答案

谢谢@MilenPavlov 和@CDrosos。

我选择了 CDrosos 的解决方案,因为这正是我一直在寻找的理想解决方案。

我在 BaseActivity 中创建了一个静态计时器成员,它在应用程序启动时设置。这样就不会发生并发。这使我能够创建一个计时器经过的方法,该方法将检查数据库中是否有待处理的 Web 请求,并在 IsConnected 和 pendingWebRequests.Any() 时发布。

    if (_timer == null)
{
_timer = new Timer();
_timer.Elapsed += _timer_Elapsed;
_timer.Interval = (1000 * 60) * 5; // 5 ;
_timer.Start();
}

然后进行webapi请求。

关于c# - 如何在不中断用户体验的情况下在后台轮询 webapi 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32560463/

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