Mono for Android 优势与劣势

最近有兴趣了解一下Mono for Andriod,也就是使用.NET平台来开发Andriod程序。Mono for Android API 几乎映射标准的Andriod API.例如,两边API几乎所有相同的类、方法和字段都相同。主要区别之一,就是Mono for Android使用属性和委托在Java中不存在。我喜欢紧密相关的两个api,因为这使它容易地在它们之间来回切换,并使用已存在标准Android API文档。我能够成功完成我的项目使用Android,但仍有几个困难....以下列出了关于Mono for Android的利弊:

优势:

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等平台是吸引人的,所以某些情况下需要权衡。

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。

分类: Mobile

Mono for Android 优势与劣势相关推荐

  1. ipad和android平板应用程序,安卓平板相比iPad有哪些优势和劣势?

    平板只有两种,一种是iPad,另一种是其他.这句话,或许明后两年左右改变说法. 手机从16:9发展到全面屏,干掉了之前的MAX类型大屏手机,但是始终没有干掉平板,哪怕是7英寸左右的Mini类型的平板. ...

  2. HTML5开发APP有哪些优点和缺点?HTML5优势和劣势大对比

    HMTL5开发APP有哪些优点和缺点?对比起来看,HTML5开发APP的优势明显大于劣势.比如HTML5有跨平台,开发成本低,推广更容易等等优点,同时它也有着一些缺点,比如容易受到网络的限制,用户体验 ...

  3. 三谈 钉钉、企微、飞书 的不同:优势即劣势

    最近几周和好几位钉钉.飞书的高管都有交流,所以继续聊几句钉钉.企微.飞书给我的启发. 一句话总结,就是: 高水平的竞争,优势即劣势,所以只能把它看做自己的特点,并找到独特的定位,再等对手犯错. 先来看 ...

  4. monocross 环境搭建:MonoTouch Mono for Android

    monocross 中各个平台环境不同: 针对ios的MonoTouch只能在OSX上弄.Android 的Mono for Android在mac 及pc机上都可以..... 安装MonoTouch ...

  5. python编程语言能干什么-python编程语言的优势与劣势--python能干啥

    首先先发表小编的观点吧嘿嘿:python并不适合作为第一编程语言,但是第二编程语言的首选 (哥哥们先别喷我,且听我慢慢说来~~~) 先解释一下啥是第一第二编程语言吧: 通常从事开发的程序员都会学不止一 ...

  6. 我的第一个 Mono for Android 应用

    我的第一个 Mono for Android 应用 Mono for Android 初体验, 学习怎么使用 Mono for Anrdoid 创建 android 应用, 如何使用 Intent 启 ...

  7. C#开发Android应用的必备——Mono for Android V1.0 发布

    Mono for Android V1.0 正式发布啦! Mono for Android就是原先的MonoDroid,由于商标问题(名称中含有Droid),现在改名为Mono for Android ...

  8. RDB 文件的优势和劣势

    一.优势 1.RDB 是一个非常紧凑(compact)的文件,它保存了redis 在某个时间点上的数据集.这种文件非常适合用于进行备份和灾难恢复. 2.生成RDB 文件的时候,redis 主进程会fo ...

  9. 解决Mono for android的xml编辑器无法代码完成的问题

    这两天在讲使用.Net开发Android的Mono for android技术,发现使用的开发工具在停止调试的时候特别卡,能卡上几十秒钟,而且经常弹出报错的对话框,严重影响心情,因此昨天就下载安装了最 ...

最新文章

  1. 【笔记】与Android酱的第一周
  2. 一个帖子学会Android开发四大组件
  3. Android 通过局域网udp广播自动建立socket连接
  4. 实现ModelDriver接口的功能(转)
  5. 【CodeForces - 1051B】Relatively Prime Pairs (构造,思维,素数,水题)
  6. DNSChanger路由器DNS劫持木马 新版本正在攻击家庭及小企业路由器 企图推送广告...
  7. oracle的aud文件,oracle asm实例的aud文件有关问题
  8. 常用模块(collections模块,时间模块,random模块,os模块,sys模块,序列化模块,re模块,hashlib模块,configparser模块,logging模块)...
  9. 如何用计算机克数和斤换算,质量(重量)单位换算计算器
  10. 易捷文件共享web服务器 v3.5,易捷文件共享Web服务器 官方版
  11. Windows update 注册表项
  12. Wifi-direct 相关记录
  13. 设计模式之禅【门面模式】
  14. linux usleep函数,linux下,测试usleep函数对CPU占用率的影响
  15. EduCoder-程序设计技术R-循环结构程序设计2-(第1关:C循环-求平均成绩)(第2关:C循环-求各位数字)(第3关:C循环-求阶乘之和)(第4关:C循环-水仙花数)(第5关:C循环
  16. python编程软件免费吗_Python Mac下载-Python for Mac(Python编程工具) v3.10.0a2免费版
  17. 工业互联 智造未来 “2018 智造中国峰会•上海松江” 在上海市松江区隆重召开
  18. ODOO教程_1、ODOO是什么
  19. java9-模块化open/opens/use/provides...with...
  20. linux menuconfig搜索,Linux make menuconfig查找并快速跳转指定驱动选项

热门文章

  1. python email模块详解_python email模块
  2. python3安装requests_小小-Centos7安装Python3并安装Requests的方法
  3. fastjson反序列化过滤字段属性_Fastjsonlt;=1.2.47反序列化漏洞源码分析及复现
  4. 1.790E308java_java基础知识总结
  5. 税控盘抄报税显示服务器为空,税控盘显示离线是什么原因造成的?怎么处理?...
  6. 多个ai文件合并成pdf_如何将多个文档合并成PDF?
  7. python文件路径改了需要重新配置环境吗_python自学环境配置
  8. java手机大头_Java也强大:
  9. linux源码scripts目录是什么,linux-kernel – linux / scripts / recordmcount:没有这样的文件或目录...
  10. mac json工具_工具类封装的思路 | 钉钉群机器人为例