欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Mango Trainning Course多任务.docx

    • 资源ID:23316968       资源大小:1.07MB        全文页数:32页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Mango Trainning Course多任务.docx

    1、Mango Trainning Course多任务动手实验向你的应用添加多任务实验版本: 1.0.0最后更新: 10/28/2018目录综述 3练习 4练习1 把应用程序的 Tiles 设置到开始菜单项中 4练习2 执行一个后台代理 16概要 27综述原始的Windows Phone 开发工具不允许你的应用程序在未运行的时候执行操作。这个限制了你在你的应用程序中的发挥。但是代号为 Mango的Windows Phone 允许你的应用程序在未激活时通过使用后台代理来执行操作。为了包含后台代理的逻辑你可以在你的应用程序解决方案中添加一个新类别的项目。这样你的应用程序就在操作系统中注册后台代理并且在

    2、你的程序休眠的时候安排代理运行。这可以有效的使你开发的应用程序在Windows Phone Mango中使用多任务。另外,代号Mango的Windows Phone允许一个应用程序用多个tile与之关联,通过选择开始菜单上的这些tiles可以使你很快定位到应用程序的不同位置。本次实验通过这个名叫“Tidy”的应用来展示这些新特性,需要必要的步骤为你的应用实施和注册后台代理。我们将使用一个后台代理来更新处于休眠状态程序的tiles。目标这个实验提供下面的指导帮你完成任务: 了解怎样把多任务的tiles放到开始菜单中 了解如何管理一个应用的tiles 在你的应用中运行一个后台代理 首要必备下面这些

    3、先决条件将确保你从这次动手实验中得到更多: Microsoft Visual Studio 2010 或者 Microsoft Visual C# Express 2010, 和 Windows Phone Developer Tools 可以从这个网址获得 知道关于如何创建 Windows Phone 7 实验架构这个实验在下面的任务中包含一个单独的练习:1. 把一个应用程序的tiles钉到开始菜单中和在开始菜单中管理一个应用程序的tiles2. 创建一个新的后台代理工程,添加这个代理的逻辑并且通过你的应用程序展示这个后台代理 估算完成所需的时间完成这个实验将要花费30到50分钟 练习在这个

    4、练习中,我们展示如何在主屏幕上为主程序添加次级tiles。然后我们创建一个后台代理去更新已经订到桌面的tiles。任务 1 把工程的tiles钉到开始菜单上1. 打开位于实验存放文件目录SourceBegin下的解决方案的开始文件。2. 定位到Todo.Business 工程并且在Shell工程文件夹下新建一个名为ShellTileHelpersCore类。 设置这个类为 static 的:C#public static class ShellTileHelpersCore / 3. 在这个新建类的文件上面添加下面的命名空间的声明:C#using Microsoft.Phone.Shell;u

    5、sing System.Linq;4. 这个类帮我们封装了 tile的pinning和 unpinning 函数。创建一个允许我们把tiles 钉到设备开始菜单的方法:C#public static void Pin(Uri uri, ShellTileData initialData) / Create the tile and pin to start. This will cause the app to be / deactivated ShellTile.Create(uri, initialData);ShellTile是一个定义在 Microsoft.Phone.Shell 命名

    6、空间中的类,这个类主要负责管理这个应用的主要和次要的tiles 。这个类提供一系列的用来 创建/移除 tiles的静态方法,和一个包含这个应用程序所有tiles的集合,并且可以从这个集合中查找特定的tile。每一个应用程序的tile必须指定特定的URI,使得用户通过点击开始菜单上的tile或者通过ShellTileData 声明的对应这个 tile的对象实例来跟踪。注释:在这个任务的后面我们检测这个ShellTileData类和这个类的属性。5. 使用下面代码片段添加两个重载的UnPin方法:C#public static void UnPin( string id ) var item =

    7、ShellTile.ActiveTiles.FirstOrDefault (x = x.NavigationUri.ToString().Contains ( id ) ); if (item != null) item.Delete(); public static void UnPin( Uri uri ) var item = ShellTile.ActiveTiles.FirstOrDefault (x = x.NavigationUri = uri); if ( item != null ) item.Delete (); 为了删除已经钉在开始菜单上的tile,我们首先定位到这个ti

    8、le,并且只执行这个指定tile对象的 Delete方法。这两个方法都是通过ShellTile.ActiveTiles的属性尝试定位到特定的tile。如果定位到这个tile,就删除它6. 添加两个额外的方法到这个类中。这两个方法对于UnPin方法本质上是相似的,但它们用来检测某个工程是否包含特定的tile:C#public static bool IsPinned(Uri uri) var item = ShellTile.ActiveTiles.FirstOrDefault (x = x.NavigationUri = uri); return item != null; public st

    9、atic bool IsPinned( string uniqueId ) var item = ShellTile.ActiveTiles.FirstOrDefault (x = x.NavigationUri.ToString().Contains(uniqueId); return item != null;7. 保存这个文件并且导航到Todo工程。定位到名叫Push的工程文件夹下,在这个文件下添加一个名叫ShellTileHelpersUI 的类。设置这个类为static的并且确保它是Todo命名空间下的(由于疏忽它是在Todo.Push命名空间下创建的):C#namespace To

    10、do public static class ShellTileHelpersUI / 这个类将使用从中ShellTileHelpersCore中引进的功能去帮助管理表现在UI上的Pin/Unpin功能。8. 我们的目的是创建tiles,这些tiles代表每个单独的工程并且在首页提供关于这个工程的简单的信息。就像前面提到的,每个tile应该包含一个URI属性来指向一个显示这个工程的页面。添加下面的的扩展的方法用来轻松新建来自一个指定工程的URI:C#public static Uri MakePinnedProjectUri(this Project p) return UIConstants

    11、.MakePinnedProjectUri(p); 注释:导航到Misc文件夹下的UIConstants.cs类文件去看MakePinnedProjectUri方法的实现。9. 添加一个额外的方法用来指向一个tile的匹配相应工程颜色的背景图片的URI。C#public static Uri GetDefaultTileUri (this Project project) string color = ApplicationStrings.ColorBlue ; / default to blue ColorEntryList list = App.Current.ResourcesUICon

    12、stants.ColorEntries as ColorEntryList ; if (list != null) ColorEntry projectEntry = list.FirstOrDefault(x = x.Color = project.Color); if (projectEntry != null) color = projectEntry.Name; return UIConstants.MakeDefaultTileUri(color); 10. 添加一个把应用程序钉到开始菜单上的方法。因此,我们需要使用ShellTileData,但是因为这个类是抽象的,我们将用一个St

    13、andardTileData类去继承它。依照下面的代码创建一个PinProject方法:C#public static void PinProject (Project p) / Create the object to hold the properties for the tile StandardTileData initialData = new StandardTileData / Define the tiles title and background image BackgroundImage = p.GetDefaultTileUri(), Title = p.Name ;

    14、Uri uri = p.MakePinnedProjectUri(); ShellTileHelpersCore.Pin(uri, initialData); 11. 这个UnPinProject方法就是简单的传递工程的 ID 到我们之间创建的UnPin方法C#public static void UnPinProject(Project p) ShellTileHelpersCore.UnPin(p.Id.ToString() ); 12. 相似的,IsPinned方法是依赖前面实现的ShellTileHelpersCore方法:C#public static bool IsPinned (

    15、 this PhoneApplicationPage page ) return ShellTileHelpersCore.IsPinned( page.NavigationService.CurrentSource); public static bool IsPinned(this Project project) Uri uri = project.MakePinnedProjectUri(); return ShellTileHelpersCore.IsPinned( project.Id.ToString() ); 13. 保存这个类并且导航到在ViewsProject路径下的Pro

    16、jectDetailsView.xaml.cs文件。这个类已经包含了一个名叫appBar_OnPinProject的方法。这个方法是一个事件委托的方法,当用户点击application bar菜单上的pin/unpin图标时执行。把下面的代码添加到方法体中:C#private void appBar_OnPinProject(object sender, EventArgs e) Project project = DataContext as Project; if (project.IsPinned() ) ShellTileHelpersUI.UnPinProject(project);

    17、 else ShellTileHelpersUI.PinProject( project ); UpdateProjectPinIcons(); 这个方法根据当前的状态pin或者unpin当前的工程到开始菜单,并且和application bar icon是一致的。14. 定位到文件中已经存在的名叫UpdateProjectPinIcons的方法。当前的方法是空的。添加下面代码片段中的代码,这是根据工程钉到开始菜单上的状态,用来初始化application bar icon和对应的文本:C#private void UpdateProjectPinIcons() if (DataContext

    18、 as Project).IsPinned() (ApplicationBarIconButton)ApplicationBar.Buttons(int)Utils.ProjectDetailsViewAppBarButtons.PinProject).Text = ApplicationStrings.appBar_UnPin; (ApplicationBarIconButton)ApplicationBar.Buttons(int)Utils.ProjectDetailsViewAppBarButtons.PinProject).IconUri = new Uri(/Images/appb

    19、ar.unpin.png, UriKind.Relative); else (ApplicationBarIconButton)ApplicationBar.Buttons(int)Utils.ProjectDetailsViewAppBarButtons.PinProject).Text = ApplicationStrings.appBar_Pin; (ApplicationBarIconButton)ApplicationBar.Buttons(int)Utils.ProjectDetailsViewAppBarButtons.PinProject).IconUri = new Uri(

    20、/Images/appbar.pin.png, UriKind.Relative); 这段代码依照当前工程pin的状态来重新获取对应的文本。15. 定位到InitializePage方法,并且把下面高亮的代码片段添加到这个方法的末尾:C#private void InitializePage() if (!pageInitialized) Guid projectID = NavigationContext.GetGuidParam(UIConstants.ProjectIdQueryParam); DataContext = App.ProjectsViewModel.Items.First

    21、OrDefault( p = p.Id = projectID); if (DataContext as Project).OverdueItemCount 0) textOverdueCount.Foreground = new SolidColorBrush(Colors.Red); textOverdueDescription.Foreground = new SolidColorBrush(Colors.Red); / If we are looking at the default project, disable the deletion / button if (projectI

    22、D = new Guid(Utils.ProjectIDDefault) (ApplicationBarIconButton)ApplicationBar.Buttons (int)Utils.ProjectDetailsViewAppBarButtons.DeleteProject). IsEnabled = false; UpdateProjectPinIcons(); ApplicationBar.IsVisible = true; pageInitialized = true; / Check if this was initialized via deep-link. if (!Na

    23、vigationService.CanGoBack) ApplicationBarIconButton homeButton = new ApplicationBarIconButton IconUri = new Uri (/Images/appbar.home.png, UriKind.Relative), IsEnabled = true, Text= ApplicationStrings.appBar_Home ; homeButton.Click += new EventHandler(homeButton_Click); ApplicationBar.Buttons.Add ( h

    24、omeButton ) ; 这个新代码块托管一个特殊的情况,是当应用程序是通过按钉在开始菜单上的tiles启动时的情况。当通过tiles加载应用时,用户将会看到的是关联的项目的详情。由于这个项目的详情页是第一页,当按下手机的back键时,程序将直接关闭而不是返回到主菜单。因为这个原因,当通过开始菜单的tile加载应用时,我们将在application bar中添加一个特殊的按钮来使用户可以直接返回应用程序的主菜单。16. 保存这个类,编译并运行程序。导航到工程管理页面(通过点击主屏幕的application bar 上的“folder”图标)并且生成至少两个不同颜色的工程。运行一些任务并指派他

    25、们到不同的工程。你的工程列表现在应该看起来像下面的截图:图形 1程序屏幕点击程序图标,导航到程序详述页,并且通过“Pin”图片把工程钉到开始菜单:图形2工程详述页图形3钉到开始菜单的图标17. 点击这个tile可以直接到达应用程序页:图形4工程详述页18. 既然工程被钉到开始菜单了,观察“Pin”图标是怎么改变的。点击unpin图标然后从这个程序导航走-然后你将看到工程的tile已经不在开始菜单了:图形5Start Screen19. 通过前面的步骤同样可以添加或删除其他应用程序在开始菜单上的tile:图形6更多应用程序的 tiles20. 这里总结了这个任务。在下一个任务,我们添加一个后台代

    26、理,用这个代理更改程序的tile。 任务 2 实现一个后台代理1. 在这个解决方案中添加一个新项目工程。我们使用“Windows Phone Task Scheduler Agent”模板,给它取名为TaskLocationAgent:图形7Adding new project to the solution2. 在这个新项目中添加对Todo项目的引用:Figure 8Adding a Reference to the Background Agent打开位于Todo工程项目下Properties文件夹下的WMAppManifest.xml文件,添加引用到一个代理工程中,manifest文件需

    27、要包括一个指向新代理的元素。XML 3. 在使这个代理生效前,添加一些代码用来开始和停止这个代理。导航到ViewModels文件夹下的SettingsViewModel.cs文件。在SettingsViewModel类中新建下面类的成员C#PeriodicTask periodicTask = null; const string PeriodicTaskName = TidyPeriodic; PeriodicTask是Microsoft.Phone.Scheduler命名空间下的类,它用来代表那些有规律运行一小段时间的预定义好的任务。后面我们将在这个任务中使用这些变量。4. 定位到OnSa

    28、ve方法中,并且在“SaveSettings();”方法前面添加下面高亮显示的代码:C#void OnSave( object param ) if (UseBackgroundTaskUpdates | UseBackgroundLocation) EnableTask(PeriodicTaskName, ApplicationStrings.PeriodicTaskDescription); else DisableTask(PeriodicTaskName); SaveSettings(); 这个方法将要使用两个提供辅助的方法,我们将在下面的步骤中创建。5. 添加EnableTask方法

    29、:C#void EnableTask(string taskName, string description) PeriodicTask t = this.periodicTask; bool found = (t != null); if (!found) t = new PeriodicTask(taskName); t.Description = description; t.ExpirationTime = DateTime.Now.AddDays(10); if (!found) ScheduledActionService.Add(t); else ScheduledActionService.Remove(taskName); ScheduledActionService.Add(t); if (Debugger.IsAttached) ScheduledActionService.LaunchForTest(t.Name, TimeSpan.FromSeconds(5); 这个方法尝试定位到之前创建的一个定期的任务,并且更新它的描述和有效时间。


    注意事项

    本文(Mango Trainning Course多任务.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开