Windows Phone 8.1 后台任务
Windows Phone 8.1 应用可以添加多个后台任务,以辅助应用完成某些任务。
(1)新建前台应用
后台任务是依托于前台应用的,所以必须拥有一个前台应用。
该前台应用的功能很简单,就是读取文件中保存的文本;而后台任务就是将当前时间写入文件中。
前台界面:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions> <Viewbox Margin="20,0">
<TextBlock x:Name="timeTextBlock"
Text="Time"/>
</Viewbox> <Grid Grid.Row="1" Margin="20,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions> <Button x:Name="registerButton"
Content="Register Task"
Margin="0,0,5,0"
HorizontalAlignment="Stretch"
Click="registerButton_Click"/>
<Button x:Name="unregisterButton" Grid.Column="1"
Content="Unregister Task"
Margin="5,0,0,0"
HorizontalAlignment="Stretch"
Click="unregisterButton_Click"/>
</Grid>
</Grid>
打开应用时就读取文本信息:
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
await ShowFileText();
} private async Task ShowFileText()
{
file = await ApplicationData.Current.LocalFolder.CreateFileAsync("Time.txt", CreationCollisionOption.OpenIfExists);
timeTextBlock.Text = await FileIO.ReadTextAsync(file);
}
(2)添加一个 Windows Runtime Component 项目
后台任务必须为 Windows Runtime Component。
(3)编写一个继承自 IBackgroundTask 接口的类
在后台任务的项目中新建一个类,并继承 IBackgroundTask 接口,实现 Run 方法,该类还必须为 sealed:
public sealed class WritingTask: IBackgroundTask
{
public async void Run(IBackgroundTaskInstance taskInstance)
{
var deferral = taskInstance.GetDeferral(); await WriteTimeToFile("Time.txt"); deferral.Complete();
} private async Task WriteTimeToFile(string path)
{
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(path, CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, DateTimeOffset.Now.ToString());
}
}
Run 方法就是后台任务执行时的方法。
(4)前台应用 Manifest 中添加后台任务
可以设置触发器的类型,记得设置后台任务的入口点。
然后前台应用添加后台任务项目的引用。
(5)前台应用对后台任务进行注册与解除注册
最后的一步也就是在前台应用中对后台任务进行注册了:
private async void registerButton_Click(object sender, RoutedEventArgs e)
{
BackgroundExecutionManager.RemoveAccess();
await BackgroundExecutionManager.RequestAccessAsync(); RegisterTask();
} private static void RegisterTask()
{
SystemTrigger triger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false); BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder();
taskBuilder.Name = "WritingTask";
taskBuilder.SetTrigger(triger);
taskBuilder.TaskEntryPoint = typeof(ZMyBackgroundTasks.WritingTask).FullName;
taskBuilder.Register();
}
这里选择的触发器为“当时区改变时”,这只是为了方便测试,你可以根据需要自行选择。
解除注册的方法为:
private void unregisterButton_Click(object sender, RoutedEventArgs e)
{
var task = BackgroundTaskRegistration.AllTasks.Values.First();
task.Unregister(true);
BackgroundExecutionManager.RemoveAccess();
}
Windows Phone 8.1 后台任务的更多相关文章
- Windows 8.1 应用开发后台任务概述(Windows XAML)
说到后台任务,这是在和许多 Android 开发者聊天的时候,经常被提起的话题之一, Windows 移动平台的后台任务的形式有别与 Android 的后台 service,简单的说在 Windows ...
- windows phone 8.1 开发:后台任务详解
原文出自:http://www.bcmeng.com/backtask/ 小梦今天给大家分享一下windows phone 8.1中的后台任务如何实现,许多应用都会用到后台任务,所以我们必须得掌握. ...
- WPF 后台任务 等待动画 样例 && C# BackgroundWorker 详解
运行效果: 前台代码: <Window x :Class="Waiting.Window1" xmlns="http://schemas.microsoft.com ...
- WP8.1开发:后台任务详解(求推荐)
小梦今天给大家分享一下windows phone 8.1中的后台任务如何实现,许多应用都会用到后台任务,所以我们必须得掌握. 新建后台任务类: 首先我们先新建一个windows phone 8.1空白 ...
- 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务
[源码下载] 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后 ...
- 重新想象 Windows 8 Store Apps (65) - 后台任务: 音乐的后台播放和控制
[源码下载] 重新想象 Windows 8 Store Apps (65) - 后台任务: 音乐的后台播放和控制 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台 ...
- 重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传
[源码下载] 重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台任务 后台 ...
- 重新想象 Windows 8 Store Apps (67) - 后台任务: 推送通知
[源码下载] 重新想象 Windows 8 Store Apps (67) - 后台任务: 推送通知 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台任务 推送通 ...
- 重新想象 Windows 8 Store Apps (68) - 后台任务: 控制通道(ControlChannel)
[源码下载] 重新想象 Windows 8 Store Apps (68) - 后台任务: 控制通道(ControlChannel) 作者:webabcd 介绍重新想象 Windows 8 Store ...
随机推荐
- Android JSON数据解析(GSON方式)
要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...
- BZOJ4182: Shopping(点分治,树上背包)
Description 马上就是小苗的生日了,为了给小苗准备礼物,小葱兴冲冲地来到了商店街.商店街有n个商店,并且它们之间的道路构成了一颗树的形状. 第i个商店只卖第i种物品,小苗对于这种物品的喜爱度 ...
- C++ 复制到粘贴板
网上好多教程讲如何复制到剪切板,但是有可能复制的是乱码,为了方便,将CString类型的复制到剪切板 CString source;if (OpenClipboard()){//防止非ASCII语言复 ...
- viewPager-基本实现示例
直接看代码 package com.example.myviewpager; import android.app.Activity; import android.os.Bundle; import ...
- 41.关于Intellij IDEA菜单项中Compile、Make和Build的区别
转自:https://www.cnblogs.com/ini_always/archive/2011/10/23/2221985.html Compile.Make和Build的区别 针对Java ...
- Python *的下载、安装和使用
最近正在学习机器学习和深度学习,需要python,大家都知道,它是这些领域的入门语言,不多说,直接上干货!突然发现python比java好玩多了 下面就开始python的安装以及测试,python2. ...
- Android Intent的setClass和setClassName的区别
setClass:跳转到与该工程下的(同一个Application中的)activity或者service setClassName:跳转到不同Applicaiton的activity或者servic ...
- JQuery 各节点获取函数:父节点,子节点,兄弟节点
jQuery.parent(expr) //找父元素 jQuery.parents(expr) //找到所有祖先元素,不限于父元素 jQuery.children ...
- 【Android开发经验】我们要友好的告诉用户,程序要崩溃了
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 尽管我们的程序在正式上线之前,都会经过严格的測试.从而保证程序的健壮性和良好的用户体验,可是 ...
- js进阶 13-7 如何实现滑动面板效果
js进阶 13-7 如何实现滑动面板效果 一.总结 一句话总结:就是普通的jquery动画中的滑动效果.$('#content').slideToggle().滑动效果的实质是通过调整高度. 1.滑动 ...