2

我有一个相当简单的问题。

我们使用 BackgroundAgents( Periodic agent ) 来执行一些需要 WiFi(Internet) 连接才能执行HttpWebRequest的后台任务。正如第二个参考中提到的 HttpWebRequest 是受支持的,但问题是如果 Windows Phone 被锁定或空闲超过 1 分钟,WiFi 将被禁用。

根据我阅读并尝试知道的内容,我有两个重要问题:

  1. Microsoft 是否会根据预定义的时间间隔定期启用 WiFi 以检查新电子邮件或其他通知?如果答案是肯定的,我的后台代理是否会在此时间间隔内重新安排并运行?
  2. 直到知道我发现 HttpWebRequest 在锁定或空闲超过 1 分钟时不会唤醒手机。是这样吗?很多人表示,如果手机被锁定或 1 分钟过去了,HttpWebRequest 可以正常工作。我无法做到这一点。

谢谢。

示例代码:

protected override void OnInvoke(ScheduledTask task)
    {            
        ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(120));

        MakeHttpRequest("test");
    }
private void MakeHttpRequest(string position)
    {
        if (position != null)
        {
            var request = (HttpWebRequest)WebRequest.Create(
            new Uri("http://mydomain.com/Testing/Details/"+position));
            request.BeginGetResponse(r =>
            {
                var httpRequest = (HttpWebRequest)r.AsyncState;
                var httpResponse = (HttpWebResponse)httpRequest.EndGetResponse(r);

                using (var reader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var response = reader.ReadToEnd();

                    Deployment.Current.Dispatcher.BeginInvoke(new Action(() =>
                    {
                    }));
                }
            }, request);
        }
        this.NotifyComplete();
    }

PS:请记住,当我在应用程序使用 USB 电缆连接到计算机时运行此代码时,一切运行正常。这就是为什么我认为后台工作人员存在问题,它不会唤醒手机+ WiFi 以执行 HttpWebRequest。

4

1 回答 1

1

根据我日常使用手机的经验,Windows Phone 在锁定后不会重新启用 wifi,除非手机已插入并充电。它还允许在禁用 wifi 之前已经开始完成的数据传输。

但是,即使手机尝试定期重新连接,每次用户重新连接时,某些 wifi 提供商都会重定向到身份验证页面进行身份验证,而 Windows Phone 无法处理这种情况。

实际上,当用户带着手机到处走动时,并不能保证您有可用的数据服务,因此处理问题应该是应用程序代码正常路径的一部分。

于 2012-04-20T21:41:02.780 回答