读书频道 > 软件开发 > C# > C#开发Android应用实战——使用Mono for Android和.NET/C#
2.1.4 在使用Mono for Android时需要权衡的事项
2012-12-26 09:00:02     我来说两句 
收藏    我要投稿   
《C#开发Android应用实战——使用Mono for Android和.NET/C# 全面透彻地讲解Android应用编程知识,分析如何结合使用C#和Mono来编写在Android设备系列上运行的应用程序。在这本由多位专家联袂撰写的必备精品书...  立即去当当网订购

当决定不使用本机API和开发堆栈时,进行相关权衡是非常必要的。需要对使用更舒适(但更抽象)层的优势所在进行权衡。

1. 等待更新

虽然离开本机Java和Eclipse而使用Visual Studio具有前面所提到的好处,但是同时也存在缺点。首先,一般来说必须等待最新的改进。也就是说,通常只要Android SDK中增加了新的功能或者增强了性能,你就必须等待Mono for Android的下一个相应版本。
2. 潜在的性能影响

第二个需要权衡的是性能。Mono for Android运行时必须与Dalvik运行时进行通信,以便完成相关工作。然而,通常这种开销较小,可与前面所提到的好处相抵消。

在安装好针对Visual Studio的Mono for Android工具后,通过选择File|New|Project|C#|Mono for Android可以非常容易地启动一个新的Mono for Android项目。后面将详细介绍这部分内容。

3. 内存管理

许多由Mono for Android所分配的对象都是对这些对象所表示的Java对象的包装。那么会发生什么事情呢:每当分配一个包装了相应的Java类型的类型时,都会创建两个对象:

(1) 位于Java堆中的Java对象

(2) 位于Mono堆中的Mono“代理”对象

Mono for Android进行了相关的处理,以确保当某一对象引用另一个对象时,这两个对象都保持活动状态。也就是说,只要Mono GC(garbage collector,垃圾收集器)引用了一个对象,Java端的对象将保持活动状态,反之亦然。而这一切都通过mandroid.exe工具在生成时所创建的代理对象来完成。

然而,GC生来是比较懒惰的,它只会执行一个命令集合,而当对象超出范围时则不会执行。所以,这也就意味着跨VM的垃圾将会比平时逗留更长的时间,这是不可避免的。

所以,当因为临时用途而需要分配很多对象时,有必要显式处理这些对象。一个比较简便的处理方法是使用带有一个新对象的using块,该方法将隐式地处理作为using子句目标的新对象,从而处理Mono端的包装,这样也将允许Java-VM收集相关对象,从而防止过多的临时对象逗留太长时间。

提示:要获取更多关于垃圾收集的详细信息,可查阅下面超链接中的文档:http://mono-android.net/index.php?title=Documentation/ GC&highlight= garbage+ collection。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.1.3 使用Mono for Android的原因
下一篇:2.1.5 Mono for Android开发环境需要的其他工具
相关文章
图文推荐
2.2.3 对程序进行调
2.2.2 编译和运行程
2.2.1 创建控制台项
2.1 开发环境的搭建
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站