#问题概要:部分mango机型使用WP7.0编译的xap时,当执行多任务从后台激活“demo.xap”情况下,软件从后台被激活,调至前台,但会出现一时的重新刷屏现,暂时影响用户正常使用。
#问题排查
1.检查tombstone机制实现,无异常。
2.检查系统实现tombstone之机制,WP7.0与WP7.1+实现不同。在系统实现activate中,( ActivatedEventArgs)e.IsApplicationInstancePreserved仅存在于WP7.1+中。
3.不同的WP7.1+版本也有不同,可参见测试机器系统情况。因此会有现象差异问题。从此怀疑是由于不同mango之间采用了不同的Microsoft.Phone.dll文件,从而导致系统行为不一致。
4.为证明此推测,使用qq.xap等应用验证,结果证明推理正确。
#结论
由于WP仍然在不断完善中,当前用户的手机OS版本性能和行为差异很大,应用的实现应该考虑是否需要兼容所有行为。
抑或寻求应用程序区分以便兼容各种情况。
#测试机型及其相关的OS版本
samsung omia
OS version 7.10.7712.60
HTC 7 Mozart T8698
OS 7714.WM7_Main(DFT).20110807-1626
HTC HD7 T9292
OS 7661.WP7_5_Trial(mojobld).20110607-1657 (issue occured here!)
附:
为解决此问题,调查了一下WMAppManifest.xml文件。。。结局是悲惨的,但过程还可以拿出来写一下。
由于WMAppManifest.xml文件是属于系统打包在XAP中的,其目的主要告诉系统该XAP的必要信息。
在安装之后,很有可能该文件并不存在于DEMO目录下了,这一点与解压XAP不相同。
使用XmlWriter/XmlReader/XElement/XDocument等方法修改AppPlatformVersion="7.0/7.1"均未起效,有一个原因可能是由于绝对路径不正确。
此问题暂且搁置,待洒家深入学习后再表,但个人认为若无强大理由,还是不要轻易修改该文件为好,否则将来出现不可预知问题的时候,真的木法了。