gpt4 book ai didi

windows-phone-8 - Windows Phone 8 后台代理仅在使用调试版本时运行(似乎不在发布版本上运行)

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

这是一个奇怪的。

当我运行调试版本时,我的 Windows Phone 8 应用程序的后台代理似乎一整天都在更新。但是,当我更改为发布版本时,它要么根本不运行,要么很少运行。这是一个天气应用程序:我的动态磁贴的内容应该每小时更改一次。我看到它有时每小时更新一次,然后停止几个小时,然后突然重新开始。应用程序的后台代理在任何时候都不会被操作系统阻止,这对我来说表明后台代理没有任何问题,或者它只是没有运行太多/根本没有运行。

目前,我在运行 Windows Phone 8.1 的 Lumia 1020 上调试和发布了该应用程序的版本。在代码方面,它们是相同的。调试版本每 30 分钟更新一次(我知道事件磁贴上的时间戳的原因),而发布版本自 90 分钟前创建以来没有更新一次(但其后台代理仍被列为“允许”在省电应用程序上运行)。

这是创建代理的方法:

    private void AddAgent(string periodicTaskName)
{
periodicTask = ScheduledActionService.Find(periodicTaskName) as PeriodicTask;
if (periodicTask != null)
{
RemoveAgent(periodicTaskName);
}

periodicTask = new PeriodicTask(periodicTaskName);
periodicTask.Description = "LiveTileHelperUpdateTask";

try
{
ScheduledActionService.Add(periodicTask);

// If debugging is enabled, use LaunchForTest to launch the agent in 5 seconds.
//#if(DEBUG_AGENT)
ScheduledActionService.LaunchForTest(periodicTaskName, TimeSpan.FromSeconds(1));
//#endif
}
catch (InvalidOperationException)
{

}
catch (SchedulerServiceException)
{

}
}

这是预定的代理代码:
public class ScheduledAgent : ScheduledTaskAgent
{
/// <remarks>
/// ScheduledAgent constructor, initializes the UnhandledException handler
/// </remarks>
static ScheduledAgent()
{
// Subscribe to the managed exception handler
Deployment.Current.Dispatcher.BeginInvoke(delegate
{
Application.Current.UnhandledException += UnhandledException;
});
}

/// Code to execute on Unhandled Exceptions
private static void UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
Debugger.Break();
}
}

/// <summary>
/// Agent that runs a scheduled task
/// </summary>
/// <param name="task">
/// The invoked task
/// </param>
/// <remarks>
/// This method is called when a periodic or resource intensive task is invoked
/// </remarks>
protected async override void OnInvoke(ScheduledTask task)
{
// If the app has not been purchased and trial has expired,
// don't do anything here.
if( (bool) IsolatedStorageSettings.ApplicationSettings["TrialExpired"] == true )
return;

// Setup view model to get data from.
LiveTileViewModel viewModel = new LiveTileViewModel();
await viewModel.getWeatherForTileLocation();

// Use a dispatcher because we are NOT on the UI thread!
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
try
{
RadFlipTileData extendedData = new RadFlipTileData();
extendedData.IsTransparencySupported = true;

// Determine which sized tile will be the live tile.
// Only create a live tile for it due to memory constraints.
string liveTileSize = IsolatedStorageSettings.ApplicationSettings["LiveTileSize"].ToString();
switch (liveTileSize)
{
case "SMALL TILE":
extendedData.SmallVisualElement = new LiveTileSmall()
{
Icon = viewModel.Location.Hourly.Data[0].Icon,
Temperature = viewModel.Location.Hourly.Data[0].Temperature
};
break;
case "REGULAR TILE":
// Code here similar to small tile's
break;
default:
// Code here similar to small tile's
break;
}

FreeMemory();

foreach (ShellTile tile in ShellTile.ActiveTiles)
{
LiveTileHelper.UpdateTile(tile, extendedData);
break;
}

NotifyComplete();
}
catch (Exception e)
{
}
});
}
}
}

任何人都知道可能导致这种情况的原因或有任何类似的经验,即后台代理仅适用于调试版本?

谢谢你的时间。

最佳答案

您是否尝试卸载调试版本并安装版本以验证后台任务执行?

并尝试删除 ScheduledActionService.LaunchForTest发布构建的方法调用,请参阅文档中的注意部分。在当前代码中,您指定每 1 秒触发一次后台任务的测试运行。有一个限制,在某些情况下,如果此时间低于 60 秒,则任务可能无法运行。

关于windows-phone-8 - Windows Phone 8 后台代理仅在使用调试版本时运行(似乎不在发布版本上运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24954092/

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