开发者应该知道Build 2015的N点

美国当地时间4月29日(北京时间4月30日凌晨),2015年微软Bulid开发者大会在美国旧金山开幕。在Build2015首日的主题演讲中,微软CEO Satya Nadella等高管们轮流登台,宣布了一系列针对开发者的新产品和服务,包括:

Windows 10的新特性以及一系列旨在帮助开发者将网页、.NET、Win32、安卓和iOS程序转为Windows 10应用的软件开发包(SDK);面向智能应用的全新Microsoft Azure数据服务,针对Windows、Mac和Linux的Visual Studio集成开发环境和 .Net工具及其运行平台,以及能帮助开发者在Office 365上构建富媒体应用的API接口等。

另请关注优快云前方记者带来的图文直播+要点解读——微软Build 2015大会(实时更新)。

https://img-my.youkuaiyun.com/uploads/201504/30/1430354697_6029.jpg

微软首席执行官萨提亚·纳德拉表示:“微软正在雄心勃勃地打造跨Windows、Azure和Office的平台,使开发者在我们的平台上实现其潜能。通过全面整合,我们将创造出更个性化和智能化的体验,使全球数十亿人从中获益。”

一、Windows 10独具规模并为开发者开创全新平台机遇

微软展示了Windows 10的多项新特性,包括跨不同设备部署应用的新功能,以及多种编写Windows 10程序的新方式。基于广阔的发展前景,微软公布了其对Windows 10寄予的厚望——微软希望到2018财年,Windows 10的活跃设备数超过10亿。

微软详细介绍了开发者如何将一个应用部署于不同类型的Windows 10设备上,并自动适应不同屏幕尺寸。利用通用Windows 平台(Universal Windows Platform),开发者可以为每种设备定制独特的功能、整合Cortana和Xbox Live服务、提供安全交易、创建全息体验(hologram),并最终将应用发布到Windows 应用商店中。作为通用Windows平台的一部分,微软还展示了如何利用手机的扩展底座(Continuum)实现应用的跨屏体验,使手机也能像PC一样被用做生产力或娱乐工具。[发布时该功能仅限于部分高端手机。外接显示器需要支持HDMI输入。配件需另购。]

Windows应用商店为不同设备的Windows 10用户提供完全一致的体验,使用户更容易地找到应用、游戏、音乐、视频等精彩内容[应用上市时间和体验根据各地市场可能有所不同。]。在支付交易方面,Windows应用商店支持众多主流支付手段,其中囊括了所有生态系统中90多个移动运营商所提供的计费支付。在大会的主题演讲上,微软还特别介绍了一系列正在为Windows应用商店开发应用的合作伙伴,其中包括 USA Today、微信、迪士尼和Netflix等。

https://img-my.youkuaiyun.com/uploads/201504/30/1430354811_4933.png

大会上,微软演示了微信在Windows 10上跨PC、平板和手机的通用开发预览版。基于其特性,用户未来不仅能够在手机上使用微信,还能在平板电脑、桌面电脑等各类设备上获得一致、高效、自由的社交体验。同时,Windows 10的自适应交互功能降低了设计和开发成本,内置的墨水笔技术更实现了手写输入的自然人机交互。

微软欢迎所有开发者加盟通用Windows平台,并公布了四个全新的软件开发包(SDK),开发者只需对代码进行微小的修改,就能将其为网页、.NET、Win32、iOS和安卓开发的程序转换到Windows应用商店。开发者可以在现有的安卓或iOS应用程序代码中,集成通用Windows平台功能,从而发布到Windows应用商店。

大会还演示了Windows 10全新浏览器——Microsoft Edge的新特性。它为开发者提供了更多的应用展示和曝光机会,并提升了应用通过JavaScript和HTML实现扩展的能力。

在突出Windows 10新机遇的同时,微软还分享了自首次公布Microsoft HoloLens近百天来所取得的最新进展。由Windows 10驱动的HoloLens是全球首个能独立工作的全息电脑。大会现场展示了Trimble、凯斯西储大学、克利夫兰医学中心等客户对于这项创新技术的应用。

https://img-my.youkuaiyun.com/uploads/201504/30/1430354821_5429.png

关于Windows 10和微软HoloLens的更多信息,请参见Windows博客文章

二、Azure和Visual Studio帮助开发者创造多平台、跨设备的智能应用

微软提供了Azure SQL Database弹性数据库的预览,它能让独立服务提供商和软件即应用(SaaS)的开发商实现跨越数千个数据库的资源池化,从而让他们真正体验到公有云高效利用数据源和高性价比的优势。为了帮助开发者管理大规模数据集,微软推出了Azure SQL Data Warehouse,这是业界首个企业级的云数据仓库即服务,它能够在数秒内实现扩展、收缩和暂停。微软还宣布了Azure Data Lake,这是一个开放的、大规模扩展的数据储存仓库,能够支持PB级大小的文件,并提供与Azure HDInsight、Azure Machine Learning、Cloudera和Hortonworks的高速集成,从而实现更快速地从海量数据中获取洞察。

https://img-my.youkuaiyun.com/uploads/201504/30/1430354913_5035.png

为帮助开发者提升生产力,微软带来了面向多平台和跨设备的最完善的开发工具和运行时。面向Windows、Mac和Linux提供预览的Visual Studio Code是一个免费的代码编辑器,特别针对网页和云应用进行了优化。为了进一步扩大与开源和.NET社区的合作,微软发布了面向Windows、Linux和Mac OS X的.NET Core的预览。微软还发布了Visual Studio 2015 Release Candidate,让开发者能够更容易地为Windows、Linux、iOS和安卓平台开发和部署应用。

三、Office让开发者有机会为更多用户提供智能解决方案

微软为开发者开启了拥抱12亿Office用户的新途径,其中包括全新的Office Graph API、面向iPad和Outlook的功能扩展插件,以及统一API等。Office Graph API允许用户和开发者利用Office Graph访问、添加和构建包含了Office 365用户、服务和关系型数据的智能存储库。OneNote、Outlook和OneDrive通用的统一API与Office Graph相结合,将让开发者得以帮助消费者和企业用户更好地利用其最具价值也最有帮助的数据。

https://img-my.youkuaiyun.com/uploads/201504/30/1430354984_5565.png

关于Microsoft Azure、Visual Studio和Office Graph API的更多信息,请参阅这篇博客文章

四、亮点荟萃

  • Azure:Azure是一个超大规模的云平台,目前已经开放了19个Aure计算区域。Azure也允许开发者使用Linux和Windows接入云端。(过去的一年里,微软提供了超过500个Azure的新特性,目前已经拥有超过30万的开发者在Visual Studio Online注册。)
  • 针对Linux,Windows和Mac的.NET内核将在今天开放预览,现场演示了在Linux中调试.NET程序。
  • Visual Studio也支持Android模拟器了,开发者可以利用Visual Studio进行开发,完成后同时在Android以及Windows中进行模拟测试。
  • 借助Azure云服务,也可以在Visual Studio在线建立并测试程序,这样一来开发者就可以在其它平台中利用浏览器进行程序调试。
  • Mac以及Ubuntu平台也迎来了精简版的微软的开发工具Visual Studio Code,不过这并不具有与WIndows平台相同的功能,仅可以用来调整代码。然而这已经是微软迈出的关键一步,更重要的是,Visual Sudio Code在多平台免费。(不过,Visual Studio 2015依旧是最完整的开发工具,但Visual Studio Code提供了跨平台的代码编辑功能。)
  • 微软也宣布了Data Lake(数据湖)的服务,可以提供高效率的数据分析存储,以及企业级的安全和权限管理。
  • Office的开发者可以创作跨越Windows、网页以及iOS的Office插件了。
  • ,云端硬盘OneDrive可以成为不同程序的数据的存储中心。你在也不需要在不同程序中寻找不同的数据了,Office中的数据不再被封闭在Office的那几个程序中,而可以开放给不同的插件和程序。
  • Skype同样是办公环节重要的组成部分,微软同样发布了一个网页版的Skype API。
  • 微软致力于为Windows建立同一个生态系统,而非像苹果的Mac/iOS和谷歌的Android/Chrome双系统两个生态的模式,Windows 10将采用同一个应用商店,意味着开发者只需要提交一次,即可展示给Windows 10覆盖的所有设备用户。
  • 通用程序的一个特性是,你调整窗口尺寸时,其中的内容也会自动调整,并且同样支持触摸。
  • 开发者可以通过四种方式建立Windows应用程序:第一种是网站,现场展示了在Windows Store注册的网站,用户可以像打开一个应用一样打开这样的网站;第二种是.NET和Win32程序,大部分传统Windows程序都是这个类别;第三种是Android Java/C++,Windows将预置Android子系统,开发者可以重复使用在编写Android程序中使用过的大部分代码;第四种是iOS使用的Objective C,意味着开发者可以将iOS程序带入Visual Studio并且将它们直接变成Windows 10程序。
  • Windows 10在锁屏状态支持Spotlight,可以显示照片;开始菜单重新采用了Aero玻璃特效,屏幕右上角还有一个必应壁纸的是否喜欢,其实这项功能已经有了。
  • IE浏览器的替代品Project Spartan的正式名字是“Microsoft Edge”,内置Cortana,适合阅读,内置截屏涂鸦以及分享。
  • Microsoft Edge使用HTML5和Java内核,可以直接使用开发者针对Firefox和Chrome浏览器已经开发的浏览器插件。
  • 微软正式发布现实增强工具HoloLens的开发平台,HoloLens程序都是Windows 10通用程序,Windows Holographic。Holographic将进入并改变建筑行业,这个行业是数十亿美元的行业,借助Hololens,建筑师可以直接在3D空间中看到建筑模型并直接进行调整,提前预知工程完成时的样子。医学领域也是HoloLens的擅长领域,医生可以对人体进行3D建模,分别对骨骼、肌肉、循环系统以及具体器官进行直观检查。

大会官网:Build 2015

没有机会前往旧金山的朋友们,可在优快云报名哟!

//Build/2015中国行北京站期待您的光临

//Build/2015中国行上海站期待您的光临


另请关注:图文直播+要点解读——微软Build 2015大会


极客头条正式开通了微信公众号,刊选每日精华内容和最新的资讯文章,在微信添加公众号搜索“csdn_geek”或微信扫描下方的二维码。

https://img-my.youkuaiyun.com/uploads/201504/14/1428999730_5047.jpg

<think>好的,我现在需要帮用户解答关于开发者应该如何应对他们之前提到的安卓应用后台活动启动限制导致隐私页面无法拉起的问题。用户之前的问题已经得到了详细的解决方案,现在他们想知道开发者应该怎么做。作为助手,我需要从开发者的角度出发,提供具体的指导。 首先,我要回顾一下用户的问题:用户在使用QQ音乐时,清除数据后,通过语音助手播放音乐,第一次会拉起隐私页面,但返回桌面再次尝试时隐私页面未出现,日志显示后台活动启动失败,allowbackgroundactivitystart设为false。之前的回答已经给出了用户端的解决方法,现在用户想知道开发者应该如何避免或修复这个问题。 作为开发者,需要从应用的设计和代码层面来考虑如何符合安卓系统的后台活动限制,同时确保隐私协议和权限正确初始化。首先,应该检查应用是否遵循了安卓的最佳实践,特别是关于后台启动Activity的限制。安卓10及更高版本对后台启动Activity有严格限制,应用在后台时无法启动Activity,除非满足特定条件,比如用户发起操作或者有高优先级的通知。 开发者需要确保隐私协议的弹窗不是在后台服务中触发的,而是在用户主动操作时触发。例如,当用户首次启动应用或者执行某个需要隐私同意的操作时,应在前台Activity中请求权限或显示隐私协议,而不是通过后台服务。这可能涉及到重构应用的初始化流程,确保所有必要的权限和协议确认都在前台完成。 另外,需要检查应用是否正确处理了后台启动Activity被拒绝的情况。当系统阻止后台启动Activity时,应用应该有适当的错误处理机制,比如记录日志、提示用户或者回退到其他操作流程。例如,如果隐私页面无法在后台拉起,应用可以检测到这一情况,并在下次用户主动打开应用时提示完成必要的设置。 权限管理也是关键。开发者需要确保应用在首次启动时正确请求所有必要的权限,并在用户拒绝后优雅地处理,提供再次请求的途径。同时,应用应该动态检查权限状态,避免在缺少必要权限的情况下执行相关操作,从而导致异常。 日志分析也很重要。开发者需要详细记录应用在尝试启动后台Activity时的上下文信息,包括当时的应用状态、用户操作流程等,以便更好地复现和定位问题。例如,日志中提到的allowbackgroundactivitystart标记为false,开发者需要确定这个标记是在哪里被设置的,是否有可能在隐私协议未完成时错误地阻止了必要的Activity启动。 还需要考虑不同安卓厂商的定制系统可能存在的差异。例如,小米的MIUI、华为的EMUI等可能对后台活动有额外的限制,开发者需要测试应用在这些系统上的表现,并针对性地适配。可能需要申请特殊权限,或者在应用启动时引导用户手动开启相关权限。 最后,与系统API的兼容性也是重开发者应该使用最新的安卓X库或Jetpack组件,确保应用在不同版本的系统上行为一致。例如,使用ActivityResultContracts来处理权限请求,而不是旧的onRequestPermissionsResult方法,以提高兼容性和代码的可维护性。 总结来说,开发者需要从以下几个方面入手:遵循安卓后台限制、优化初始化流程、加强权限管理、处理后台启动失败的情况、适配不同厂商系统、完善日志记录,以及保持与最新API的兼容。这样不仅能够解决当前的问题,还能提升应用的整体稳定性和用户体验。</think>--- ### 开发者应对方案 针对**后台活动启动限制(`allowBackgroundActivityStart`)**和**隐私协议初始化冲突**问题,开发者需从以下层面优化应用逻辑: --- #### 一、遵循安卓后台活动启动规范 1. **避免后台启动敏感Activity** - **原则**:根据安卓10+的限制,禁止后台应用直接启动Activity(如隐私协议弹窗),除非符合以下条件: - 用户主动触发(如击通知、语音指令的显式响应)。 - 前台服务绑定高优先级通知(需声明`FOREGROUND_SERVICE`权限)。 - **代码检查**: 使用`ActivityManager.isBackgroundRestricted()`判断当前是否允许后台启动Activity,若返回`false`则需调整逻辑。 2. **使用前台服务引导用户操作** - 若需在后台完成隐私协议确认,应通过**前台服务**弹出通知,用户击通知后启动隐私页面(确保符合系统要求)。 - 示例代码: ```kotlin val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setContentTitle("请完成隐私协议") .setContentIntent(pendingIntent) // 跳转至隐私Activity .build() startForeground(NOTIFICATION_ID, notification) ``` --- #### 二、优化隐私协议与权限初始化流程 1. **预判隐私协议状态** - 在应用启动或关键操作(如播放音乐)前,检查隐私协议是否已同意: ```kotlin fun isPrivacyAgreed(): Boolean { return SharedPreferences.getBoolean("is_privacy_accepted", false) } ``` - 若未同意,**立即中断后台操作**,并引导至前台Activity完成协议。 2. **分离初始化与业务逻辑** - **错误做法**:在播放音乐的服务中直接弹出隐私页面(违反后台限制)。 - **正确做法**: 1. 语音助手调用播放时,先检查隐私协议状态。 2. 若未同意,返回错误码(如`ERROR_PRIVACY_NOT_ACCEPTED`),并提示系统需启动前台页面。 3. 由语音助手或系统统一处理弹窗(如通过`PendingIntent`)。 --- #### 三、适配系统级权限配置 1. **动态申请“后台弹窗”权限** - 检测系统是否限制后台弹窗,并引导用户手动开启: ```kotlin if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION).apply { data = Uri.parse("package:$packageName") } startActivity(intent) } ``` - **厂商适配**:针对MIUI、EMUI等系统,需额外跳转至对应权限管理页面(通过检测ROM类型实现)。 2. **兼容`allowBackgroundActivityStart`标记** - 在`AndroidManifest.xml`中声明`android:allowBackgroundActivityStart="true"`(仅对部分系统生效)。 - 通过`ActivityOptions.setPendingIntentBackgroundActivityStartMode(MODE_BACKGROUND_ACTIVITY_START_ALLOWED)`控制单个`PendingIntent`的行为。 --- #### 四、日志与异常处理 1. **关键日志埋** - 记录隐私协议状态、权限状态、后台启动尝试次数: ```kotlin Log.d("PrivacyFlow", "isPrivacyAgreed=$isAgreed, allowBackgroundStart=$allowBackground") ``` - 监控`SecurityException`(后台启动Activity被拦截时抛出)。 2. **降级策略** - 若后台启动隐私页失败,缓存操作请求,待用户下次打开应用时自动触发协议流程。 - 示例: ```kotlin fun playMusic() { if (!isPrivacyAgreed()) { cachePlayRequest("最伟大的作品") // 存储待播放歌曲 triggerPrivacyActivity() return } // 正常播放逻辑 } ``` --- #### 五、测试验证方案 1. **场景覆盖** - 清除数据后首次语音播放 → 应弹隐私页。 - 隐私同意后再次后台播放 → 不弹隐私页且正常播放。 - 拒绝隐私协议后播放 → 中断并提示。 2. **自动化测试脚本** - 使用`adb`模拟语音指令和权限变更: ```bash adb shell am start-activity -n com.tencent.qqmusic/.PrivacyActivity adb shell settings put global restricted_device_permission false ``` --- ### 总结 开发者需**严格遵循安卓后台启动规范**,通过**预判隐私状态**、**分离初始化流程**、**动态申请权限**及**完善异常处理**,避免因系统限制导致的功能中断。同时,针对不同厂商系统做兼容性适配,并加强关键日志监控,确保用户体验一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值