Mono for Android 优势与劣势
来源:互联网 发布:ease软件下载 编辑:程序博客网 时间:2024/05/03 14:23
优势:
1. 平台间共享代码。如果配合使用Mono Touch API与Windows Phone API,您可能重用业务逻辑代码为iPhone和Windows Phone平台所用。这是可能的,因为一切都可以进行使用单一的编码,常见的编程语言而不是3种不同的编程语言。请注意,这虽然只适用于业务逻辑代码;而每个平台的呈现代码将因为不同平台APIs的有所差异。在我看来重用代码的能力是使用Mono fo Android的最佳优势。
2. 使用你已有的.NET技能。如果你在团队中比较熟悉.net平台而不是Java平台,那么用Mono for Android比较合适。但是,我认为这个优势已是有所减少的事实,C#和Java是如此相似。有可能在使用Mono Touch,因为这消除了需要学习的Objective- C构成一个学习曲线,所以比有Java更大的优势。
劣势:
1. 性能问题。例如垃圾回收,Mono for Android 声称支持垃圾回收,但也有需要注意的一些严重限制。"GC不完整视图的进程,可能无法运行在内存不足时,由于GC不知道内存不足。"因为这通常需要手动,每当创建一个activity运行垃圾回收或销毁,以释放未使用的内存。否则,可能导致内存不足的异常。 我自己也不止一次碰到了这个问题,不得不使用替代方法来解决问题。
关于内存管理:
许多Mono for Android被分配对象为包装Java对象做为它们的代表。 这时会发生什么:每次你分配一个包装过类型相对应Java类型,就创建两个对象:
1). Java对象在Java堆中
2). Mono代理对象在Mono堆中
Mono for Android不能确保这两个对象相互引用后长时间存活。那就是,Mono的垃圾回收引用一个对象,Java端的对象将一直活着,反之亦然。这个代理对象的创建mandroid.exe是工具编译时完成。 然而,GC是懒惰的,按需运行的集合,而不是简单地对象超出范围时候。 那么这意味着跨虚拟机的垃圾至少比一般更多,这是不可避免的。所以,为了临时使用时分配一个大数字对象,显示释放那些对象所需的资源是宝贵的。约定的方法使用using关键字来new一个object,使用using子句来隐式释放目标的new object是有必要的。释放Mono端的包装的Java-VM收集的对象,从而来防止太多的临时对象关联在一起很长时间。
去官方网站了解更多关于Mono for Android的垃圾回收。
2. 第三方JAR Libraries - Mono for Android为Android 4.2版本推出绑定任意JAR文件的支持。JAR绑定项目是一个蛮好的概念,但不幸的是这是不可靠的。对于简单JAR files可行,但往往不支持在更复杂的Java库的JAR文件。Xamarin提供一些关于如何排除绑定错误jar的文档,但它并不总是帮助我。在未来版本也许这项功能将改善,但目前其难以使用,缺乏文档,还有几个著名的bugs。
3.Bugs-- 有大量的bug在Mono for Android。嗯,也许重要的是太强的一个词,但肯定的更加稳定的需使用Java相对于Mono for Android。 我遇见的最严重的两个bug有:日期时间。现在返回错误的UTC时区时间,并使用SSL与WebClient时会导致异常。
越来越多的趋势是使用标准的Android和Java API来开发Android应用,而不是使用c#和Mono Android API。这么说是因为,第一,Java有较好的开发社区支持,第二,使用Java可能会导致问题比较少。然而,能够共享相同的代码在Android,iPhone,而Windows Phone等平台是吸引人的,所以某些情况下需要权衡。
出自
- Mono for Android 优势与劣势
- Mono for Android 优势与劣势
- C# foreach循环较for循环的优势与劣势
- .NET的优势与劣势
- NET的优势与劣势
- glTexStorage* 与 glTexImage*的优势与劣势
- 技术分析:.NET的优势与劣势
- 分布式数据库系统优势与劣势
- JSP的优势与劣势浅析
- 中国十大电商网站优势与劣势分析
- Spring 注解 @responsebody 的优势与劣势
- Android平台的优势和劣势
- 了解分布式数据库系统优势与劣势(转)
- NanShan即时通讯论——HTML5的优势与劣势
- JSP的优势 和劣势 与php的比较
- 学习C/C++编程,Linux平台的优势与劣势
- Springmvc与ssh2框架的优势和劣势
- 图标字体运用以及其优势与劣势
- PHP中session详解
- 2012-2013 ACM-ICPC, NEERC, Southern Subregional Contest 解题报告
- Just Do It!
- declared this activity in your AndroidManifest.xml?
- HDU 3635 Dragon Balls
- Mono for Android 优势与劣势
- php session
- ORACLE 11g 下载地址
- hdu3415 Max Sum of Max-K-sub-sequence(单调队列求n个数中和的最大值)
- yum install && yum localinstall && the other
- 我看过的关于职业规划最好最全面的一篇文章
- 从零开始学C++之模板(二):类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)
- struct stat结构体示例
- Ubuntu下看迅雷在线